Skip to content

Commit 04b1120

Browse files
authored
Merge pull request #74 from commontk/fix-launcherlib-abi-2
Fix launcherlib abi
2 parents b11d224 + fbdee17 commit 04b1120

File tree

5 files changed

+184
-19
lines changed

5 files changed

+184
-19
lines changed

Base/CMakeLists.txt

+49-5
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,63 @@ configure_file(
1313
set(KIT_include_directories
1414
)
1515

16+
# Source files
17+
set(KIT_SRCS
18+
ctkAppLauncherSettings.cpp
19+
ctkAppLauncherSettings.h
20+
ctkAppLauncherSettings_p.h
21+
ctkSettingsHelper.cpp
22+
ctkSettingsHelper.h
23+
)
24+
25+
# Headers that should run through moc
26+
set(KIT_MOC_SRCS
27+
ctkAppLauncherSettings.h
28+
ctkAppLauncherSettings_p.h
29+
)
30+
31+
# Resources
32+
set(KIT_resources
33+
)
34+
35+
# Target libraries
36+
set(KIT_target_libraries
37+
${QT_LIBRARIES}
38+
)
39+
40+
ctkMacroBuildLib(
41+
NAME CTKAppLauncherLib
42+
INCLUDE_DIRECTORIES ${KIT_include_directories}
43+
INSTALL_INCLUDE_DIRECTORIES "${CTK_INSTALL_INCLUDE_DIR}"
44+
SRCS ${KIT_SRCS}
45+
MOC_SRCS ${KIT_MOC_SRCS}
46+
TARGET_LIBRARIES ${KIT_target_libraries}
47+
RESOURCES ${KIT_resources}
48+
LIBRARY_TYPE "STATIC"
49+
LABEL ctkAppLauncher
50+
)
51+
52+
# Export targets for build tree
53+
set_property(GLOBAL APPEND PROPERTY CTKAppLauncherLib_TARGETS CTKAppLauncherLib)
54+
55+
# Export targets for install tree
56+
if(CTK_BUILD_SHARED_LIBS OR CTKAppLauncher_INSTALL_LauncherLibrary)
57+
install(TARGETS CTKAppLauncherLib
58+
EXPORT CTKAppLauncherLibTargets
59+
RUNTIME DESTINATION ${CTK_INSTALL_BIN_DIR} COMPONENT Runtime
60+
LIBRARY DESTINATION ${CTK_INSTALL_LIB_DIR} COMPONENT Runtime
61+
ARCHIVE DESTINATION ${CTK_INSTALL_LIB_DIR} COMPONENT Development)
62+
endif()
63+
1664
# Source files
1765
set(KIT_SRCS
1866
ctkAppArguments.cpp
1967
ctkAppArguments.h
2068
ctkAppLauncher.cpp
2169
ctkAppLauncher.h
2270
ctkAppLauncher_p.h
23-
ctkAppLauncherSettings.cpp
24-
ctkAppLauncherSettings.h
25-
ctkAppLauncherSettings_p.h
2671
ctkCommandLineParser.cpp
2772
ctkCommandLineParser.h
28-
ctkSettingsHelper.cpp
29-
ctkSettingsHelper.h
3073
)
3174

3275
# Headers that should run through moc
@@ -45,6 +88,7 @@ set(KIT_resources
4588
# Target libraries
4689
set(KIT_target_libraries
4790
${QT_LIBRARIES}
91+
CTKAppLauncherLib
4892
)
4993

5094
ctkMacroBuildLib(

CMake/CTKAppLauncherLibConfig.cmake.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ if(NOT CTKAppLauncherLib_TARGETS_IMPORTED)
88
include(${CTKAppLauncherLib_TARGETS})
99
endif()
1010

11-
set(CTKAppLauncherLib_LIBRARIES CTKAppLauncherBase)
11+
set(CTKAppLauncherLib_LIBRARIES "@CTKAppLauncherLib_TARGETS@")

CMake/ctkMacroBuildLib.cmake

-12
Original file line numberDiff line numberDiff line change
@@ -113,18 +113,6 @@ macro(ctkMacroBuildLib)
113113
set_target_properties(${lib_name} PROPERTIES ${CTK_LIBRARY_PROPERTIES})
114114
endif()
115115

116-
# Export targets
117-
set_property(GLOBAL APPEND PROPERTY CTKAppLauncherLib_TARGETS ${lib_name})
118-
119-
# Install rules
120-
if(CTK_BUILD_SHARED_LIBS OR CTKAppLauncher_INSTALL_LauncherLibrary)
121-
install(TARGETS ${lib_name}
122-
EXPORT CTKAppLauncherLibTargets
123-
RUNTIME DESTINATION ${CTK_INSTALL_BIN_DIR} COMPONENT Runtime
124-
LIBRARY DESTINATION ${CTK_INSTALL_LIB_DIR} COMPONENT Runtime
125-
ARCHIVE DESTINATION ${CTK_INSTALL_LIB_DIR} COMPONENT Development)
126-
endif()
127-
128116
set(my_libs
129117
${${prefix}_TARGET_LIBRARIES}
130118
)

CMakeLists.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,10 @@ install(FILES
325325
CTKAppLauncherSettings.ini.in
326326
DESTINATION ${CTK_INSTALL_BIN_DIR} COMPONENT Development)
327327

328+
# Retrieve CTKAppLauncherLib used to configure 'CTKAppLauncherLibConfig.cmake' and
329+
# 'CTKAppLauncherLibTargets.cmake'.
330+
get_property(CTKAppLauncherLib_TARGETS GLOBAL PROPERTY CTKAppLauncherLib_TARGETS)
331+
328332
# Configure 'CTKAppLauncherLibConfig.cmake' for a build tree
329333
include(CMakePackageConfigHelpers)
330334
set(CONFIG_DIR_CONFIG ${PROJECT_BINARY_DIR})
@@ -349,7 +353,6 @@ configure_package_config_file(
349353
)
350354

351355
# Configure 'CTKAppLauncherLibTargets.cmake'
352-
get_property(CTKAppLauncherLib_TARGETS GLOBAL PROPERTY CTKAppLauncherLib_TARGETS)
353356
export(TARGETS ${CTKAppLauncherLib_TARGETS} FILE ${PROJECT_BINARY_DIR}/CTKAppLauncherLibTargets.cmake)
354357

355358
# Install 'CTKAppLauncherLibConfig.cmake'

Testing/LauncherLib/AppWithLauncherLib/main.cpp

+130
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,71 @@ int checkReadSettingsWithoutExpand()
274274
<< "<APPLAUNCHER_DIR>/libexec/<env:BAR>"
275275
);
276276

277+
//
278+
// pathsEnvVars
279+
//
280+
281+
QHash<QString, QStringList> pathsEnvVars =
282+
appLauncherSettings.pathsEnvVars(/* expand= */ false);
283+
284+
#if defined(Q_OS_WIN32)
285+
CHECK_QSTRINGLIST(
286+
pathsEnvVars.value("PATH"),
287+
QStringList()
288+
<< "<APPLAUNCHER_DIR>/cow"
289+
<< "/path/to/pig-<env:BOTH>"
290+
<< "/path/to/<env:PET>"
291+
<< "/path/to/libA"
292+
<< "<APPLAUNCHER_DIR>/libB"
293+
<< "/path/to/libC-<env:PET>"
294+
);
295+
#else
296+
CHECK_QSTRINGLIST(
297+
pathsEnvVars.value("PATH"),
298+
QStringList()
299+
<< "<APPLAUNCHER_DIR>/cow"
300+
<< "/path/to/pig-<env:BOTH>"
301+
<< "/path/to/<env:PET>"
302+
);
303+
304+
CHECK_QSTRINGLIST(
305+
pathsEnvVars.value(appLauncherSettings.libraryPathVariableName()),
306+
QStringList()
307+
<< "/path/to/libA"
308+
<< "<APPLAUNCHER_DIR>/libB"
309+
<< "/path/to/libC-<env:PET>"
310+
);
311+
#endif
312+
313+
CHECK_QSTRINGLIST(
314+
pathsEnvVars.value("PYTHONPATH"),
315+
QStringList()
316+
<< "<APPLAUNCHER_DIR>/lib/python/site-packages"
317+
<< "/path/to/site-packages-2"
318+
);
319+
320+
CHECK_QSTRINGLIST(
321+
pathsEnvVars.value("QT_PLUGIN_PATH"),
322+
QStringList()
323+
<< "<APPLAUNCHER_DIR>/libexec/qt"
324+
<< "<APPLAUNCHER_DIR>/libexec/<env:BAR>"
325+
);
326+
327+
#if defined(Q_OS_WIN32)
328+
int expectedPathsEnvVarsCount = 3;
329+
#else
330+
int expectedPathsEnvVarsCount = 4;
331+
#endif
332+
if (pathsEnvVars.count() != expectedPathsEnvVarsCount)
333+
{
334+
qWarning() << "Line" << __LINE__ << __FILE__ << "\n"
335+
<< "pathsEnvVars has not the expected number of entries\n"
336+
<< "current:" << pathsEnvVars.count() << "\n"
337+
<< "expected:" << expectedPathsEnvVarsCount << "\n"
338+
<< "current list:" << pathsEnvVars;
339+
return EXIT_FAILURE;
340+
}
341+
277342
return EXIT_SUCCESS;
278343
}
279344

@@ -368,6 +433,71 @@ int checkReadSettingsWithExpand()
368433
<< "/awesome/path/to/libexec/ASSOCIATION"
369434
);
370435

436+
//
437+
// pathsEnvVars
438+
//
439+
440+
QHash<QString, QStringList> pathsEnvVars =
441+
appLauncherSettings.pathsEnvVars();
442+
443+
#if defined(Q_OS_WIN32)
444+
CHECK_QSTRINGLIST(
445+
pathsEnvVars.value("PATH"),
446+
QStringList()
447+
<< "/awesome/path/to/cow"
448+
<< "/path/to/pig-cat-and-dog"
449+
<< "/path/to/dog"
450+
<< "/path/to/libA"
451+
<< "/awesome/path/to/libB"
452+
<< "/path/to/libC-dog"
453+
);
454+
#else
455+
CHECK_QSTRINGLIST(
456+
pathsEnvVars.value("PATH"),
457+
QStringList()
458+
<< "/awesome/path/to/cow"
459+
<< "/path/to/pig-cat-and-dog"
460+
<< "/path/to/dog"
461+
);
462+
463+
CHECK_QSTRINGLIST(
464+
pathsEnvVars.value(appLauncherSettings.libraryPathVariableName()),
465+
QStringList()
466+
<< "/path/to/libA"
467+
<< "/awesome/path/to/libB"
468+
<< "/path/to/libC-dog"
469+
);
470+
#endif
471+
472+
CHECK_QSTRINGLIST(
473+
pathsEnvVars.value("PYTHONPATH"),
474+
QStringList()
475+
<< "/awesome/path/to/lib/python/site-packages"
476+
<< "/path/to/site-packages-2"
477+
);
478+
479+
CHECK_QSTRINGLIST(
480+
pathsEnvVars.value("QT_PLUGIN_PATH"),
481+
QStringList()
482+
<< "/awesome/path/to/libexec/qt"
483+
<< "/awesome/path/to/libexec/ASSOCIATION"
484+
);
485+
486+
#if defined(Q_OS_WIN32)
487+
int expectedPathsEnvVarsCount = 3;
488+
#else
489+
int expectedPathsEnvVarsCount = 4;
490+
#endif
491+
if (pathsEnvVars.count() != expectedPathsEnvVarsCount)
492+
{
493+
qWarning() << "Line" << __LINE__ << __FILE__ << "\n"
494+
<< "pathsEnvVars has not the expected number of entries\n"
495+
<< "current:" << pathsEnvVars.count() << "\n"
496+
<< "expected:" << expectedPathsEnvVarsCount << "\n"
497+
<< "current list:" << pathsEnvVars;
498+
return EXIT_FAILURE;
499+
}
500+
371501
return EXIT_SUCCESS;
372502
}
373503

0 commit comments

Comments
 (0)