1 project(ldforge) |
1 project(LDForge) |
|
2 set(VERSION_MAJOR 1) |
|
3 set(VERSION_MINOR 0) |
|
4 set(VERSION_PATCH 0) |
|
5 |
|
6 set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}") |
|
7 if (NOT ${VERSION_PATCH} EQUAL 0) |
|
8 set(VERSION_STRING "${VERSION_STRING}.${VERSION_PATCH}") |
|
9 endif() |
|
10 |
|
11 string(TOLOWER ${PROJECT_NAME} TARGET_NAME) |
2 cmake_minimum_required(VERSION 2.8.12) |
12 cmake_minimum_required(VERSION 2.8.12) |
3 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake") |
13 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake") |
4 set(OpenGL_GL_PREFERENCE GLVND) |
14 set(OpenGL_GL_PREFERENCE GLVND) |
5 find_package(Qt6 COMPONENTS Core Widgets OpenGL UiPlugin OpenGLWidgets) |
15 find_package(Qt6 COMPONENTS Core Widgets OpenGL UiPlugin OpenGLWidgets) |
6 if (Qt6_FOUND) |
16 if (Qt6_FOUND) |
121 set(CMAKE_CXX_EXTENSIONS OFF) |
131 set(CMAKE_CXX_EXTENSIONS OFF) |
122 include_directories("${PROJECT_BINARY_DIR}") |
132 include_directories("${PROJECT_BINARY_DIR}") |
123 include_directories("${PROJECT_BINARY_DIR}/src") |
133 include_directories("${PROJECT_BINARY_DIR}/src") |
124 include_directories("${PROJECT_SOURCE_DIR}") |
134 include_directories("${PROJECT_SOURCE_DIR}") |
125 |
135 |
|
136 add_definitions(-DVERSION_MAJOR=${VERSION_MAJOR}) |
|
137 add_definitions(-DVERSION_MINOR=${VERSION_MINOR}) |
|
138 add_definitions(-DVERSION_PATCH=${VERSION_PATCH}) |
|
139 add_definitions(-DAPPNAME="${PROJECT_NAME}") |
|
140 add_definitions(-DVERSION_STRING="${VERSION_STRING}") |
|
141 |
126 if (NOT MSVC) |
142 if (NOT MSVC) |
127 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" OR "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") |
143 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" OR "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") |
128 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG") |
144 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG") |
129 endif() |
145 endif() |
130 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wunused") |
146 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wunused") |
155 ) |
171 ) |
156 |
172 |
157 set_source_files_properties(${HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) |
173 set_source_files_properties(${HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) |
158 set_source_files_properties(${QRC_FILE} PROPERTIES HEADER_FILE_ONLY TRUE) |
174 set_source_files_properties(${QRC_FILE} PROPERTIES HEADER_FILE_ONLY TRUE) |
159 set_source_files_properties(${OTHER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) |
175 set_source_files_properties(${OTHER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) |
160 set_target_properties(${PROJECT_NAME} PROPERTIES AUTOMOC 1) |
176 set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC 1) |
161 target_link_libraries(${PROJECT_NAME} PRIVATE Qt::Core) |
177 target_link_libraries(${TARGET_NAME} PRIVATE Qt::Core) |
162 target_link_libraries(${PROJECT_NAME} PRIVATE Qt::Widgets) |
178 target_link_libraries(${TARGET_NAME} PRIVATE Qt::Widgets) |
163 target_link_libraries(${PROJECT_NAME} PRIVATE Qt::OpenGL) |
179 target_link_libraries(${TARGET_NAME} PRIVATE Qt::OpenGL) |
164 target_link_libraries(${PROJECT_NAME} PRIVATE ${OPENGL_LIBRARIES}) |
180 target_link_libraries(${TARGET_NAME} PRIVATE ${OPENGL_LIBRARIES}) |
165 target_link_libraries(${PROJECT_NAME} PRIVATE ${GLEW_LIBRARIES}) |
181 target_link_libraries(${TARGET_NAME} PRIVATE ${GLEW_LIBRARIES}) |
166 target_link_libraries(${PROJECT_NAME} PRIVATE ${WIDGETLIB}) |
182 target_link_libraries(${TARGET_NAME} PRIVATE ${WIDGETLIB}) |
167 if (Qt6_FOUND) |
183 if (Qt6_FOUND) |
168 target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core5Compat) |
184 target_link_libraries(${TARGET_NAME} PRIVATE Qt6::Core5Compat) |
169 target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::OpenGLWidgets) |
185 target_link_libraries(${TARGET_NAME} PRIVATE Qt6::OpenGLWidgets) |
170 endif() |
186 endif() |
171 |
187 |
172 add_custom_target(linelength ALL |
188 add_custom_target(linelength ALL |
173 COMMAND python3 |
189 COMMAND python3 |
174 "${CMAKE_SOURCE_DIR}/tools/linelength.py" |
190 "${CMAKE_SOURCE_DIR}/tools/linelength.py" |
175 ${SOURCE_FILES} |
191 ${SOURCE_FILES} |
176 ${HEADER_FILES} |
192 ${HEADER_FILESl} |
177 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) |
193 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) |
178 add_dependencies(${PROJECT_NAME} linelength) |
194 add_dependencies(${TARGET_NAME} linelength) |
179 |
195 |
180 # Collect the current hg revision into hginfo.h |
196 # Collect the current hg revision into hginfo.h |
181 add_custom_target(revision_check ALL |
197 add_custom_target(revision_check ALL |
182 COMMAND python3 "${CMAKE_SOURCE_DIR}/tools/updaterevision.py" --cwd "$(CMAKE_SOURCE_DIR)" hginfo.h |
198 COMMAND python3 "${CMAKE_SOURCE_DIR}/tools/updaterevision.py" --cwd "$(CMAKE_SOURCE_DIR)" hginfo.h |
183 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) |
199 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) |
184 add_dependencies(${PROJECT_NAME} revision_check) |
200 add_dependencies(${TARGET_NAME} revision_check) |
185 |
201 |
186 install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin) |
202 install(TARGETS ${TARGET_NAME} RUNTIME DESTINATION bin) |