1
- cmake_minimum_required (VERSION 3.0 )
1
+ cmake_minimum_required (VERSION 3.20 )
2
2
3
3
set (PROJECT ctools)
4
4
enable_language (C CXX)
@@ -11,6 +11,10 @@ option(USE_SDL_CLIPBOARD "Use Clipboard via SDL2 (need SDL2)" OFF)
11
11
option (USE_TESTING_CTOOLS "Enable Ctools Tests" OFF )
12
12
option (USE_SHARED_LIB_CTOOLS "Enable Ctools Shared Lib" OFF )
13
13
14
+ if (USE_SHARED_LIB_CTOOLS)
15
+ set (USE_SHARED_LIBS ON )
16
+ endif ()
17
+
14
18
set (CMAKE_CXX_STANDARD 17)
15
19
set (CMAKE_CXX_STANDARD_REQUIRED ON )
16
20
set (CMAKE_CXX_EXTENSIONS OFF )
@@ -68,7 +72,7 @@ elseif(WIN32)
68
72
endif ()
69
73
70
74
if (MSVC )
71
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 / std:c++17" )
75
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17" )
72
76
add_definitions (-D__STDC__)
73
77
add_definitions (-DMSVC)
74
78
add_definitions (-DNOMINMAX)
@@ -78,7 +82,9 @@ else ()
78
82
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -std=c++17 -Wunused-parameter -Wno-unknown-pragmas" )
79
83
endif ()
80
84
81
- if (USE_SHARED_LIB_CTOOLS)
85
+ set (LIBRARIES_TO_LINK_IN_CTOOLS ${LIBRARIES_TO_LINK_IN_CTOOLS} )
86
+
87
+ if (USE_SHARED_LIBS)
82
88
set (BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE)
83
89
set (LLVM_USE_CRT_DEBUG MDd CACHE STRING "" FORCE)
84
90
set (LLVM_USE_CRT_MINSIZEREL MD CACHE STRING "" FORCE)
@@ -95,12 +101,6 @@ if (USE_SHARED_LIB_CTOOLS)
95
101
target_compile_definitions (${PROJECT} INTERFACE BUILD_CTOOLS_SHARED_LIBS)
96
102
set_target_properties (${PROJECT} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${FINAL_BIN_DIR} " )
97
103
set_target_properties (${PROJECT} PROPERTIES POSITION_INDEPENDENT_CODE ON )
98
- target_link_libraries (${PROJECT} ${GLAD_LIBRARIES} ${TINYXML2_LIBRARIES} )
99
- if (USE_GLFW_CLIPBOARD)
100
- target_link_libraries (${PROJECT} glfw)
101
- elseif (USE_SDL_CLIPBOARD)
102
- target_link_libraries (${PROJECT} SDL2)
103
- endif ()
104
104
else ()
105
105
set (BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
106
106
set (LLVM_USE_CRT_DEBUG MTd CACHE STRING "" FORCE)
@@ -117,7 +117,7 @@ else()
117
117
${GLVERSIONCHECKER_INC} )
118
118
endif ()
119
119
120
- include_directories (. )
120
+ include_directories (${CMAKE_CURRENT_SOURCE_DIR} )
121
121
122
122
set_target_properties (${PROJECT} PROPERTIES LINKER_LANGUAGE CXX)
123
123
@@ -131,13 +131,29 @@ target_include_directories(${PROJECT} PUBLIC
131
131
${CMAKE_CURRENT_SOURCE_DIR} /include
132
132
${GLAD_INCLUDE_DIR}
133
133
${TINYXML2_INCLUDE_DIR}
134
+ ${LIBRARIES_TO_INCLUDE_IN_CTOOLS}
135
+ )
136
+
137
+ set (CTOOLS_LIBRARIES
138
+ ${GLAD_LIBRARIES}
139
+ ${TINYXML2_LIBRARIES}
140
+ ${LIBRARIES_TO_LINK_IN_CTOOLS}
141
+ )
142
+ if (USE_GLFW_CLIPBOARD)
143
+ set (CTOOLS_LIBRARIES ${CTOOLS_LIBRARIES} glfw)
144
+ elseif (USE_SDL_CLIPBOARD)
145
+ set (CTOOLS_LIBRARIES ${CTOOLS_LIBRARIES} SDL2)
146
+ endif ()
147
+
148
+ target_link_libraries (${PROJECT}
149
+ ${CTOOLS_LIBRARIES}
134
150
)
135
151
136
152
set (${PROJECT} _Output_Name "${PROJECT} $<$<CONFIG:Debug>:d>" )
137
153
set_target_properties (${PROJECT} PROPERTIES OUTPUT_NAME "${${PROJECT} _Output_Name}" )
138
154
139
155
set (CTOOLS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /include PARENT_SCOPE)
140
- set (CTOOLS_LIBRARIES ${PROJECT} PARENT_SCOPE)
156
+ set (CTOOLS_LIBRARIES ${CTOOLS_LIBRARIES} ${ PROJECT} PARENT_SCOPE)
141
157
set (CTOOLS_LIB_DIR ${CMAKE_CURRENT_BINARY_DIR} PARENT_SCOPE)
142
158
143
159
#############################################################
0 commit comments