##// END OF EJS Templates
Add dependencies between target to avoid bug compilation when building...
perrinel -
r104:e9600607c0d7
parent child
Show More
@@ -1,147 +1,152
1 1
2 2 ## sciqlop - CMakeLists.txt
3 3 SET(EXECUTABLE_NAME "sciqlop")
4 4 SCIQLOP_SET_TO_PARENT_SCOPE(EXECUTABLE_NAME)
5 5 SET(SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/)
6 6 SET(INCLUDES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
7 7 SET(UI_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/ui)
8 8 SET(RES_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/resources)
9 9
10 10 # Include gui directory
11 11 include_directories("${INCLUDES_DIR}")
12 12
13 13 #
14 14 # Find Qt modules
15 15 #
16 16 SCIQLOP_FIND_QT(Core Widgets)
17
17 18
18 19 #
19 20 # Find dependent libraries
20 21 # ========================
21 22 find_package(sciqlop-gui)
22 23
23 24 SET(LIBRARIES ${SCIQLOP-GUI_LIBRARIES})
24 25 SET(EXTERN_SHARED_LIBRARIES)
25 26
26 27 INCLUDE_DIRECTORIES(${SCIQLOP-GUI_INCLUDE_DIR})
27 28
28 29 # Add sqpcore to the list of libraries to use
29 30 list(APPEND LIBRARIES ${SQPCORE_LIBRARY_NAME})
30 31
31 32 # Include core directory
32 33 include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../core/include")
33 34
34 35 # Add dependent shared libraries
35 36 list(APPEND SHARED_LIBRARIES ${SQPCORE_SHARED_LIBRARIES})
36 37
37 38 # Retrieve the location of the dynamic library to copy it to the output path
38 39 #get_property(sqpcoreLocation TARGET ${SQPCORE_LIBRARY_NAME} PROPERTY LOCATION)
39 40 list(APPEND SHARED_LIBRARIES_FROM_TARGETS ${sqpcoreLocation})
40 41
41 42 # Ui files
42 43 FILE (GLOB_RECURSE PROJECT_FORMS ${UI_FOLDER}/*.ui)
43 44
44 45 #
45 46 # Compile the application
46 47 #
47 48 FILE (GLOB_RECURSE APPLICATION_SOURCES
48 49 ${INCLUDES_DIR}/*.h
49 50 ${SOURCES_DIR}/*.c
50 51 ${SOURCES_DIR}/*.cpp
51 52 ${SOURCES_DIR}/*.h
52 53 ${PROJECT_FORMS})
53 54
54 55 FILE (GLOB_RECURSE APPLICATION_RESOURCES ${RES_FOLDER}/*.qrc)
55 56
56 57 QT5_ADD_RESOURCES(RCC_HDRS ${APPLICATION_RESOURCES} )
57 58
58 59 QT5_WRAP_UI(UIS_HDRS
59 60 ${PROJECT_FORMS}
60 61 )
61 62
62 63
63 64 ADD_EXECUTABLE(${EXECUTABLE_NAME} ${APPLICATION_SOURCES} ${RCC_HDRS} ${UIS_HDRS})
64 65 set_property(TARGET ${EXECUTABLE_NAME} PROPERTY CXX_STANDARD 14)
65 66 set_property(TARGET ${EXECUTABLE_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
66 67 target_link_libraries(${EXECUTABLE_NAME}
67 68 ${LIBRARIES})
68 69
69 70 # Link with Qt5 modules
70 71 qt5_use_modules(${EXECUTABLE_NAME} Core Widgets)
72
73
74 add_dependencies(${EXECUTABLE_NAME} ${SQPGUI_LIBRARY_NAME} ${SQPCORE_LIBRARY_NAME})
75
71 76
72 77
73 78 # Add the files to the list of files to be analyzed
74 79 LIST(APPEND CHECKSTYLE_INPUT_FILES ${APPLICATION_SOURCES})
75 80 SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_INPUT_FILES)
76 81 # Vera++ exclusion files
77 82 LIST(APPEND CHECKSTYLE_EXCLUSION_FILES ${CMAKE_CURRENT_SOURCE_DIR}/vera-exclusions/exclusions.txt)
78 83 SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_EXCLUSION_FILES)
79 84
80 85 #
81 86 # Compile the tests
82 87 #
83 88 IF(BUILD_TESTS)
84 89
85 90 INCLUDE_DIRECTORIES(${SOURCES_DIR})
86 91 FILE (GLOB_RECURSE TESTS_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Test*.cpp)
87 92 FILE (GLOB_RECURSE TESTS_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/Test*.h)
88 93 SET( TEST_LIBRARIES ${LIBRARIES})
89 94
90 95 FOREACH( testFile ${TESTS_SOURCES} )
91 96 GET_FILENAME_COMPONENT( testDirectory ${testFile} DIRECTORY )
92 97 GET_FILENAME_COMPONENT( testName ${testFile} NAME_WE )
93 98
94 99 # Add to the list of sources files all the sources in the same
95 100 # directory that aren't another test
96 101 FILE (GLOB currentTestSources
97 102 ${testDirectory}/*.c
98 103 ${testDirectory}/*.cpp
99 104 ${testDirectory}/*.h)
100 105 LIST (REMOVE_ITEM currentTestSources ${TESTS_SOURCES})
101 106 LIST (REMOVE_ITEM currentTestSources ${TESTS_HEADERS})
102 107
103 108 ADD_EXECUTABLE(${testName} ${testFile} ${currentTestSources})
104 109 TARGET_LINK_LIBRARIES( ${testName} ${TEST_LIBRARIES})
105 110 qt5_use_modules(${testName} Test)
106 111
107 112 ADD_TEST( NAME ${testName} COMMAND ${testName} )
108 113
109 114 SCIQLOP_COPY_TO_TARGET(RUNTIME ${testName})
110 115 ENDFOREACH( testFile )
111 116
112 117 LIST(APPEND testFilesToFormat ${TESTS_SOURCES})
113 118 LIST(APPEND testFilesToFormat ${TESTS_HEADERS})
114 119 LIST(APPEND FORMATTING_INPUT_FILES ${testFilesToFormat})
115 120
116 121 SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES)
117 122 ENDIF(BUILD_TESTS)
118 123
119 124 #
120 125 # Set the files that must be formatted by clang-format.
121 126 #
122 127 LIST (APPEND FORMATTING_INPUT_FILES ${APPLICATION_SOURCES})
123 128 SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES)
124 129
125 130 #
126 131 # Set the directories that doxygen must browse to generate the
127 132 # documentation.
128 133 #
129 134 # Source directories:
130 135 LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/docs")
131 136 LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src")
132 137 SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_INPUT_DIRS)
133 138 # Source directories to exclude from the documentation generation
134 139 #LIST (APPEND DOXYGEN_EXCLUDE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir/*")
135 140 SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_EXCLUDE_PATTERNS)
136 141
137 142 #
138 143 # Set the directories with the sources to analyze and propagate the
139 144 # modification to the parent scope
140 145 #
141 146 # Source directories to analyze:
142 147 LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src")
143 148 LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests")
144 149 SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_INPUT_DIRS)
145 150 # Source directories to exclude from the analysis
146 151 #LIST (APPEND ANALYSIS_EXCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir")
147 152 SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_EXCLUDE_DIRS)
@@ -1,60 +1,59
1 1 #
2 2 # Generate the source package of SciqLop.
3 3 #
4 4
5 5 install(DIRECTORY
6 6 ${EXECUTABLE_OUTPUT_PATH}
7 7 DESTINATION "."
8 8 USE_SOURCE_PERMISSIONS
9 9 COMPONENT CORE
10 10 PATTERN "*.a" EXCLUDE
11 11 )
12 12
13 13 set(EXECUTABLEDOTEXTENSION)
14 14 if(WIN32)
15 15 set(EXECUTABLEDOTEXTENSION ".exe")
16 16 endif(WIN32)
17 17 set (SCIQLOP_EXE_LOCATION ${EXECUTABLE_OUTPUT_PATH}/${EXECUTABLE_NAME}${EXECUTABLEDOTEXTENSION})
18 18
19 19 if(WIN32)
20 20 include ("cmake/sciqlop_package_qt.cmake")
21 21 endif(WIN32)
22 22
23 23
24 24 SET (CPACK_PACKAGE_VENDOR "CNRS")
25 25 SET (CPACK_PACKAGE_VERSION_MAJOR "${SCIQLOP_VERSION_MAJOR}")
26 26 SET (CPACK_PACKAGE_VERSION_MINOR "${SCIQLOP_VERSION_MINOR}")
27 27 SET (CPACK_PACKAGE_VERSION_PATCH "${SCIQLOP_VERSION_PATCH}${SCIQLOP_VERSION_SUFFIX}")
28 28 SET (CPACK_PACKAGE_VERSION "${SCIQLOP_VERSION}")
29 29 SET (CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE)
30 30 SET (CPACK_PACKAGE_CONTACT "nicolas.aunai@lpp.polytechnique.fr")
31 31 SET(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_CURRENT_SOURCE_DIR}/README.md)
32 32 # SET(CPACK_RESOURCE_FILE_WELCOME ${CMAKE_CURRENT_SOURCE_DIR}/WARN.txt)
33 33 SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
34 34 # SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_NAME}-${PROJECT_VERSION})
35 35 SET(FULLBUILD ON)
36 36
37 37 SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
38 38 SET(CPACK_GENERATOR "NSIS")
39 39 SET(CPACK_MONOLITHIC_INSTALL 1)
40 40 #SET(CPACK_COMPONENTS_ALL sciqlop qt)
41 41 SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Setup")
42 42 SET(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_NAME})
43 43
44 44 set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
45 message("exepath" ${CPACK_PACKAGE_INSTALL_DIRECTORY})
46 45
47 46 if (WIN32)
48 47 SET(CPACK_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
49 48 SET(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
50 49 SET(CPACK_NSIS_COMPONENT_INSTALL ON)
51 50 SET(CPACK_SYSTEM_NAME "MinGW32")
52 51 SET(CPACK_PACKAGING_INSTALL_PREFIX "")
53 52 #SET(CPACK_GENERATOR "NSIS")
54 53 SET(CPACK_NSIS_DISPLAY_NAME ${PROJECT_NAME})
55 54 SET(CPACK_NSIS_MUI_FINISHPAGE_RUN ${SCIQLOP_EXECUTABLE_NAME})
56 55 SET(CPACK_NSIS_MUI_ICON ${SCIQLOP_EXECUTABLE_ICON_LOCATION})
57 56 SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\${SCIQLOP_EXECUTABLE_NAME}.exe")
58 57 endif (WIN32)
59 58
60 59 INCLUDE(CPack)
@@ -1,160 +1,163
1 1
2 2 ## gui - CMakeLists.txt
3 3 STRING(TOLOWER ${CMAKE_PROJECT_NAME} LIBRARY_PREFFIX)
4 4 SET(SQPGUI_LIBRARY_NAME "${LIBRARY_PREFFIX}_gui${DEBUG_SUFFIX}")
5 5 SET(SOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
6 6 SET(INCLUDES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
7 7 SET(UI_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/ui")
8 8 SET(RES_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/resources")
9 9
10 10 # Include gui directory
11 11 include_directories("${INCLUDES_DIR}")
12 12 include_directories("${CMAKE_CURRENT_BINARY_DIR}")
13 13
14 14 # Set a variable to display a warning in the version files.
15 15 SET(SCIQLOP_CMAKE_GENERATION_WARNING "DON'T CHANGE THIS FILE. AUTOGENERATED BY CMAKE.")
16 16
17 17 #
18 18 # Find Qt modules
19 19 #
20 20 SCIQLOP_FIND_QT(Core Widgets PrintSupport)
21 21
22 22 #
23 23 # Find dependent libraries
24 24 # ========================
25 25 find_package(sciqlop-core)
26 26
27 27 SET(LIBRARIES ${SCIQLOP-CORE_LIBRARIES})
28 28
29 29 INCLUDE_DIRECTORIES(${SCIQLOP-CORE_INCLUDE_DIR})
30 30
31 31 # Add sqpcore to the list of libraries to use
32 32 list(APPEND LIBRARIES ${SQPCORE_LIBRARY_NAME})
33 33
34 34 # Add dependent shared libraries
35 35 list(APPEND SHARED_LIBRARIES ${SQPCORE_SHARED_LIBRARIES})
36 36
37 37
38 38 # Ui files
39 39 FILE (GLOB_RECURSE PROJECT_FORMS ${UI_FOLDER}/*.ui)
40 40
41 41 # Resources files
42 42 FILE (GLOB_RECURSE PROJECT_RESOURCES ${RES_FOLDER}/*.qrc)
43 43
44 44 #
45 45 # Compile the library library
46 46 #
47 47 FILE (GLOB_RECURSE MODULE_SOURCES
48 48 ${INCLUDES_DIR}/*.h
49 49 ${SOURCES_DIR}/*.c
50 50 ${SOURCES_DIR}/*.cpp
51 51 ${SOURCES_DIR}/*.h
52 52 ${PROJECT_FORMS})
53 53
54 54 QT5_ADD_RESOURCES(RCC_HDRS
55 55 ${PROJECT_RESOURCES}
56 56 )
57 57
58 58 QT5_WRAP_UI(UIS_HDRS
59 59 ${PROJECT_FORMS}
60 60 )
61 61
62 62
63 63 ADD_LIBRARY(${SQPGUI_LIBRARY_NAME} ${MODULE_SOURCES} ${UIS_HDRS} ${RCC_HDRS})
64 64 set_property(TARGET ${SQPGUI_LIBRARY_NAME} PROPERTY CXX_STANDARD 14)
65 65 set_property(TARGET ${SQPGUI_LIBRARY_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
66 66
67 67 TARGET_LINK_LIBRARIES(${SQPGUI_LIBRARY_NAME} ${LIBRARIES})
68 68 qt5_use_modules(${SQPGUI_LIBRARY_NAME} Core Widgets PrintSupport)
69 69
70 add_dependencies(${SQPGUI_LIBRARY_NAME} ${SQPCORE_LIBRARY_NAME})
71
72
70 73 # From cmake documentation: http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html
71 74 # Entries in the COMPILE_DEFINITIONS are prefixed with -D or /D and added to the compile line in an unspecified order.
72 75 # The DEFINE_SYMBOL target property is also added as a compile definition as a special convenience case for SHARED and MODULE library targets
73 76 IF(BUILD_SHARED_LIBS)
74 77 SET_TARGET_PROPERTIES(${SQPGUI_LIBRARY_NAME} PROPERTIES COMPILE_DEFINITIONS "SCIQLOP_EXPORT")
75 78 ELSE()
76 79 TARGET_COMPILE_DEFINITIONS(${SQPGUI_LIBRARY_NAME} PUBLIC "SCIQLOP_STATIC_LIBRARIES")
77 80 ENDIF()
78 81
79 82 # Set the variable to parent scope so that the other projects can copy the
80 83 # dependent shared libraries
81 84 SCIQLOP_SET_TO_PARENT_SCOPE(SQPGUI_LIBRARY_NAME)
82 85
83 86 # Copy extern shared libraries to the lib folder
84 87 SCIQLOP_COPY_TO_TARGET(LIBRARY ${SQPGUI_LIBRARY_NAME})
85 88
86 89 # Add the files to the list of files to be analyzed
87 90 LIST(APPEND CHECKSTYLE_INPUT_FILES ${MODULE_SOURCES})
88 91 SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_INPUT_FILES)
89 92 # Vera++ exclusion files
90 93 LIST(APPEND CHECKSTYLE_EXCLUSION_FILES ${CMAKE_CURRENT_SOURCE_DIR}/vera-exclusions/exclusions.txt)
91 94 SCIQLOP_SET_TO_PARENT_SCOPE(CHECKSTYLE_EXCLUSION_FILES)
92 95
93 96 #
94 97 # Compile the tests
95 98 #
96 99 IF(BUILD_TESTS)
97 100 INCLUDE_DIRECTORIES(${SOURCES_DIR})
98 101 FILE (GLOB_RECURSE TESTS_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Test*.cpp)
99 102 FILE (GLOB_RECURSE TESTS_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/Test*.h)
100 103 SET( TEST_LIBRARIES ${SQPGUI_LIBRARY_NAME})
101 104
102 105 FOREACH( testFile ${TESTS_SOURCES} )
103 106 GET_FILENAME_COMPONENT( testDirectory ${testFile} DIRECTORY )
104 107 GET_FILENAME_COMPONENT( testName ${testFile} NAME_WE )
105 108
106 109 # Add to the list of sources files all the sources in the same
107 110 # directory that aren't another test
108 111 FILE (GLOB currentTestSources
109 112 ${testDirectory}/*.c
110 113 ${testDirectory}/*.cpp
111 114 ${testDirectory}/*.h)
112 115 LIST (REMOVE_ITEM currentTestSources ${TESTS_SOURCES})
113 116 # LIST (REMOVE_ITEM currentTestSources ${TESTS_HEADERS})
114 117
115 118 ADD_EXECUTABLE(${testName} ${testFile} ${currentTestSources})
116 119 set_property(TARGET ${testName} PROPERTY CXX_STANDARD 14)
117 120 set_property(TARGET ${testName} PROPERTY CXX_STANDARD_REQUIRED ON)
118 121 TARGET_LINK_LIBRARIES( ${testName} ${TEST_LIBRARIES} )
119 122 qt5_use_modules(${testName} Test)
120 123
121 124 ADD_TEST( NAME ${testName} COMMAND ${testName} )
122 125
123 126 SCIQLOP_COPY_TO_TARGET(RUNTIME ${testName} ${EXTERN_SHARED_LIBRARIES})
124 127 ENDFOREACH( testFile )
125 128
126 129 LIST(APPEND testFilesToFormat ${TESTS_SOURCES})
127 130 LIST(APPEND testFilesToFormat ${TESTS_HEADERS})
128 131 LIST(APPEND FORMATTING_INPUT_FILES ${testFilesToFormat})
129 132 SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES)
130 133 ENDIF(BUILD_TESTS)
131 134
132 135 #
133 136 # Set the files that must be formatted by clang-format.
134 137 #
135 138 LIST (APPEND FORMATTING_INPUT_FILES ${MODULE_SOURCES})
136 139 SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES)
137 140
138 141 #
139 142 # Set the directories that doxygen must browse to generate the
140 143 # documentation.
141 144 #
142 145 # Source directories:
143 146 LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/docs")
144 147 LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src")
145 148 SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_INPUT_DIRS)
146 149 # Source directories to exclude from the documentation generation
147 150 #LIST (APPEND DOXYGEN_EXCLUDE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir/*")
148 151 SCIQLOP_SET_TO_PARENT_SCOPE(DOXYGEN_EXCLUDE_PATTERNS)
149 152
150 153 #
151 154 # Set the directories with the sources to analyze and propagate the
152 155 # modification to the parent scope
153 156 #
154 157 # Source directories to analyze:
155 158 LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src")
156 159 LIST (APPEND ANALYSIS_INPUT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/tests")
157 160 SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_INPUT_DIRS)
158 161 # Source directories to exclude from the analysis
159 162 #LIST (APPEND ANALYSIS_EXCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/path/to/subdir")
160 163 SCIQLOP_SET_TO_PARENT_SCOPE(ANALYSIS_EXCLUDE_DIRS)
General Comments 0
You need to be logged in to leave comments. Login now