Skip to content

Commit a397382

Browse files
committed
Build: plugin build in MODULE mode instead of SHARED
1 parent 6828a38 commit a397382

22 files changed

Lines changed: 143 additions & 93 deletions

File tree

CMakeLists.txt

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ file(GLOB_RECURSE PROJECT_FILES
2424
"${PROJECT_SOURCE_DIR}/plugins/*.hpp"
2525
)
2626

27+
include(FetchContent)
28+
2729
include(MakeVersion)
2830
include(MakeDoc)
2931
include(ClangTidy)
@@ -49,32 +51,6 @@ if (CAE_BUILD_DOC_HTML OR CAE_BUILD_DOC_PDF)
4951
endif ()
5052
endif ()
5153

52-
find_package(nlohmann_json QUIET CONFIG)
53-
if (NOT nlohmann_json_FOUND)
54-
include(FetchContent)
55-
FetchContent_Declare(
56-
nlohmann-json
57-
GIT_REPOSITORY "https://github.com/nlohmann/json.git"
58-
GIT_TAG "v3.12.0"
59-
GIT_SHALLOW TRUE
60-
GIT_PROGRESS TRUE
61-
)
62-
FetchContent_MakeAvailable(nlohmann-json)
63-
endif ()
64-
find_package(glm QUIET CONFIG)
65-
if (NOT glm_FOUND)
66-
FetchContent_Declare(
67-
glm
68-
GIT_REPOSITORY "https://github.com/g-truc/glm.git"
69-
GIT_TAG 1.0.3
70-
GIT_SHALLOW TRUE
71-
GIT_PROGRESS TRUE
72-
)
73-
set(GLM_BUILD_TESTS OFF CACHE BOOL "" FORCE)
74-
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
75-
FetchContent_MakeAvailable(glm)
76-
endif ()
77-
7854
add_subdirectory(modules)
7955
add_subdirectory(plugins)
8056
add_subdirectory(tests)

apps/Editor/CMakeLists.txt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@ project(cae-editor
77

88
generate_version_header("${CMAKE_BINARY_DIR}/include/CAE/VersionEditor.hpp")
99

10+
find_package(nlohmann_json QUIET CONFIG)
11+
if (NOT nlohmann_json_FOUND)
12+
FetchContent_Declare(
13+
nlohmann-json
14+
GIT_REPOSITORY "https://github.com/nlohmann/json.git"
15+
GIT_TAG "v3.12.0"
16+
GIT_SHALLOW TRUE
17+
GIT_PROGRESS TRUE
18+
)
19+
FetchContent_MakeAvailable(nlohmann-json)
20+
endif ()
21+
1022
file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/src/*.cpp")
1123

1224
add_executable(${PROJECT_NAME} ${SOURCES})
@@ -23,9 +35,11 @@ target_include_directories(${PROJECT_NAME} PRIVATE
2335
${glm_SOURCE_DIR}
2436
)
2537
target_link_libraries(${PROJECT_NAME} PRIVATE
26-
cae-modules
38+
cae-compile-options
39+
cae-interfaces
40+
cae-utils
41+
cae-engine
2742
nlohmann_json::nlohmann_json
28-
glm::glm
2943
)
3044

3145
set_target_properties(${PROJECT_NAME} PROPERTIES

modules/CMakeLists.txt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
1-
add_library(cae-modules INTERFACE)
2-
31
add_subdirectory(Utils)
2+
add_subdirectory(Interfaces)
43
add_subdirectory(Engine)
5-
6-
target_link_libraries(cae-modules INTERFACE
7-
cae-utils
8-
cae-engine
9-
cae-compile-options
10-
)
11-
target_include_directories(cae-modules SYSTEM INTERFACE
12-
"${CMAKE_CURRENT_SOURCE_DIR}/Interfaces/include"
13-
)

modules/Engine/CMakeLists.txt

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@ set(INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include")
1010
file(GLOB_RECURSE SOURCES "${SRC_DIR}/*.cpp")
1111
file(GLOB_RECURSE HEADERS "${INCLUDE_DIR}/Engine/*.hpp")
1212

13+
find_package(glm QUIET CONFIG)
14+
if (NOT glm_FOUND)
15+
FetchContent_Declare(
16+
glm
17+
GIT_REPOSITORY "https://github.com/g-truc/glm.git"
18+
GIT_TAG 1.0.3
19+
GIT_SHALLOW TRUE
20+
GIT_PROGRESS TRUE
21+
)
22+
set(GLM_BUILD_TESTS OFF CACHE BOOL "" FORCE)
23+
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
24+
FetchContent_MakeAvailable(glm)
25+
endif ()
26+
1327
add_library(${PROJECT_NAME} STATIC)
1428

1529
if (CAE_ENABLE_LTO)
@@ -24,23 +38,22 @@ target_sources(${PROJECT_NAME}
2438
)
2539

2640
target_link_libraries(${PROJECT_NAME} PRIVATE
27-
cae-utils
2841
cae-compile-options
42+
cae-interfaces
43+
cae-utils
2944
glm::glm
3045
)
3146
target_include_directories(${PROJECT_NAME}
3247
PUBLIC
3348
$<BUILD_INTERFACE:${INCLUDE_DIR}>
3449
$<INSTALL_INTERFACE:include>
35-
${glm_SOURCE_DIR}
3650
PRIVATE
37-
"${CMAKE_SOURCE_DIR}/modules/Interfaces/include"
51+
${glm_SOURCE_DIR}
3852
)
3953

4054
set_target_properties(${PROJECT_NAME} PROPERTIES
4155
CXX_STANDARD 23
4256
CXX_STANDARD_REQUIRED ON
4357
POSITION_INDEPENDENT_CODE ON
4458
CXX_EXTENSIONS OFF
45-
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
4659
)

modules/Interfaces/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
add_library(cae-interfaces INTERFACE)
2+
3+
target_include_directories(cae-interfaces SYSTEM INTERFACE
4+
"${CMAKE_CURRENT_SOURCE_DIR}/include"
5+
)

modules/Utils/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ set(INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include")
1010
file(GLOB_RECURSE SOURCES "${SRC_DIR}/*.cpp")
1111
file(GLOB_RECURSE HEADERS "${INCLUDE_DIR}/Utils/*.hpp")
1212

13-
include(FetchContent)
1413
FetchContent_Declare(
1514
stb
1615
GIT_REPOSITORY "https://github.com/nothings/stb.git"
@@ -49,5 +48,4 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
4948
CXX_STANDARD_REQUIRED ON
5049
POSITION_INDEPENDENT_CODE ON
5150
CXX_EXTENSIONS OFF
52-
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
5351
)

plugins/Renderer/DirectX11/CMakeLists.txt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,21 @@ project(cae-renderer-directx11
55

66
file(GLOB_RECURSE SOURCES "${PROJECT_SOURCE_DIR}/src/*.cpp")
77

8-
add_library(${PROJECT_NAME} SHARED ${SOURCES})
8+
add_library(${PROJECT_NAME} MODULE ${SOURCES})
99

1010
target_include_directories(${PROJECT_NAME} PRIVATE
1111
"${PROJECT_SOURCE_DIR}/include"
1212
)
1313
target_link_libraries(${PROJECT_NAME} PRIVATE
14-
cae-modules
14+
cae-compile-options
15+
cae-interfaces
16+
cae-utils
1517
)
1618
set_target_properties(${PROJECT_NAME} PROPERTIES
17-
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
18-
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
19+
CXX_STANDARD 23
20+
CXX_STANDARD_REQUIRED ON
21+
POSITION_INDEPENDENT_CODE ON
22+
CXX_EXTENSIONS OFF
23+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
24+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
1925
)

plugins/Renderer/DirectX12/CMakeLists.txt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,21 @@ project(cae-renderer-directx12
55

66
file(GLOB_RECURSE SOURCES "${PROJECT_SOURCE_DIR}/src/*.cpp")
77

8-
add_library(${PROJECT_NAME} SHARED ${SOURCES})
8+
add_library(${PROJECT_NAME} MODULE ${SOURCES})
99

1010
target_include_directories(${PROJECT_NAME} PRIVATE
1111
"${PROJECT_SOURCE_DIR}/include"
1212
)
1313
target_link_libraries(${PROJECT_NAME} PRIVATE
14-
cae-modules
14+
cae-compile-options
15+
cae-interfaces
16+
cae-utils
1517
)
1618
set_target_properties(${PROJECT_NAME} PROPERTIES
17-
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
18-
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
19+
CXX_STANDARD 23
20+
CXX_STANDARD_REQUIRED ON
21+
POSITION_INDEPENDENT_CODE ON
22+
CXX_EXTENSIONS OFF
23+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
24+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
1925
)

plugins/Renderer/OpenGL/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ if (NOT OPENGL_FOUND)
99
return()
1010
endif ()
1111

12-
include(FetchContent)
1312
FetchContent_Declare(
1413
glad
1514
GIT_REPOSITORY "https://github.com/bobis33/glad"
@@ -36,7 +35,7 @@ if (APPLE)
3635
list(APPEND SOURCES ${SOURCES_MM})
3736
endif ()
3837

39-
add_library(${PROJECT_NAME} SHARED ${SOURCES})
38+
add_library(${PROJECT_NAME} MODULE ${SOURCES})
4039

4140
target_include_directories(${PROJECT_NAME} PRIVATE
4241
"${PROJECT_SOURCE_DIR}/include"
@@ -47,7 +46,7 @@ if (UNIX AND NOT APPLE)
4746
target_include_directories(${PROJECT_NAME} PRIVATE ${EGL_INCLUDE_DIRS})
4847
endif ()
4948

50-
set(PLATFORM_LIBS cae-modules OpenGL::GL glad glm::glm)
49+
set(PLATFORM_LIBS cae-compile-options cae-interfaces cae-utils OpenGL::GL glad glm::glm)
5150
if (UNIX AND NOT APPLE)
5251
list(APPEND PLATFORM_LIBS ${EGL_LIBRARIES})
5352
elseif (APPLE)
@@ -60,5 +59,6 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
6059
CXX_STANDARD_REQUIRED ON
6160
POSITION_INDEPENDENT_CODE ON
6261
CXX_EXTENSIONS OFF
62+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
6363
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
6464
)

plugins/Renderer/Vulkan/CMakeLists.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ project(cae-renderer-vulkan
55

66
find_package(Vulkan QUIET CONFIG)
77
if(NOT Vulkan_FOUND)
8-
include(FetchContent)
98
set(VULKAN_VERSION "v1.4.329")
109
set(VULKAN_HEADERS_ENABLE_TESTS OFF CACHE BOOL "" FORCE)
1110
FetchContent_Declare(
@@ -34,20 +33,23 @@ endif()
3433

3534
file(GLOB_RECURSE SOURCES "${PROJECT_SOURCE_DIR}/src/*.cpp")
3635

37-
add_library(${PROJECT_NAME} SHARED ${SOURCES})
36+
add_library(${PROJECT_NAME} MODULE ${SOURCES})
3837

3938
target_include_directories(${PROJECT_NAME} PRIVATE
4039
"${PROJECT_SOURCE_DIR}/include"
4140
${Vulkan_INCLUDE_DIRS}
4241
)
4342
target_link_libraries(${PROJECT_NAME} PRIVATE
44-
cae-modules
43+
cae-compile-options
44+
cae-interfaces
45+
cae-utils
4546
${Vulkan_LIBRARIES}
4647
)
4748
set_target_properties(${PROJECT_NAME} PROPERTIES
4849
CXX_STANDARD 23
4950
CXX_STANDARD_REQUIRED ON
5051
POSITION_INDEPENDENT_CODE ON
5152
CXX_EXTENSIONS OFF
53+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
5254
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
5355
)

0 commit comments

Comments
 (0)