Skip to content

Commit 7a145af

Browse files
authored
[merge] Merge pull request #262 from inexorgame/iceflower/fix-cmake-gui
[cmake] Fix cmake gui multi config generation
2 parents 62689a9 + 202a505 commit 7a145af

File tree

3 files changed

+70
-22
lines changed

3 files changed

+70
-22
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
cmake_minimum_required(VERSION 3.9)
2+
3+
# https://cmake.org/cmake/help/latest/prop_tgt/MSVC_RUNTIME_LIBRARY.html
4+
cmake_policy(SET CMP0091 NEW)
5+
26
project(inexor-vulkan-renderer)
37

48
# Stop in source builds

cmake/conan_setup.cmake

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,49 @@ list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR})
1818

1919
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
2020
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
21-
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/v0.16.1/conan.cmake"
21+
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/0140fdbe363abfc1993f579e8d711067ac4742e1/conan.cmake"
2222
"${CMAKE_BINARY_DIR}/conan.cmake"
23-
EXPECTED_HASH SHA256=396e16d0f5eabdc6a14afddbcfff62a54a7ee75c6da23f32f7a31bc85db23484
23+
EXPECTED_HASH SHA256=DDF0FAFACF48B5C4912ECCE5701C252532437C40277734CAD5F4A8084470ADBC
2424
TLS_VERIFY ON)
2525
endif()
2626

2727
include(conan)
2828

2929
conan_check(VERSION 1.35.2 REQUIRED)
30-
conan_cmake_autodetect(conan_settings BUILD_TYPE ${CMAKE_BUILD_TYPE})
31-
conan_cmake_install(
32-
PATH_OR_REFERENCE ${PROJECT_SOURCE_DIR}
33-
BUILD outdated
34-
REMOTE conan-center
35-
PROFILE ${INEXOR_CONAN_PROFILE}
36-
OPTIONS build_benchmarks=${benchmark_option}
37-
OPTIONS build_tests=${tests_option}
38-
SETTINGS ${conan_settings}
39-
SETTINGS compiler.cppstd=17
40-
${compiler_libcxx}
41-
)
42-
include(conanbuildinfo)
30+
31+
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
32+
# if a specific build type is set ignore the multi config generator
33+
if(${is_multi_config} AND NOT DEFINED CMAKE_BUILD_TYPE)
34+
foreach(TYPE ${CMAKE_CONFIGURATION_TYPES})
35+
conan_cmake_autodetect(conan_settings BUILD_TYPE ${TYPE})
36+
conan_cmake_install(
37+
PATH_OR_REFERENCE ${PROJECT_SOURCE_DIR}
38+
BUILD outdated
39+
REMOTE conan-center
40+
PROFILE ${INEXOR_CONAN_PROFILE}
41+
GENERATOR cmake_multi
42+
OPTIONS build_benchmarks=${benchmark_option}
43+
OPTIONS build_tests=${tests_option}
44+
SETTINGS ${conan_settings}
45+
SETTINGS compiler.cppstd=17
46+
${compiler_libcxx}
47+
)
48+
endforeach()
49+
include(conanbuildinfo_multi)
50+
else()
51+
conan_cmake_autodetect(conan_settings)
52+
conan_cmake_install(
53+
PATH_OR_REFERENCE ${PROJECT_SOURCE_DIR}
54+
BUILD outdated
55+
REMOTE conan-center
56+
PROFILE ${INEXOR_CONAN_PROFILE}
57+
OPTIONS build_benchmarks=${benchmark_option}
58+
OPTIONS build_tests=${tests_option}
59+
SETTINGS ${conan_settings}
60+
SETTINGS compiler.cppstd=17
61+
${compiler_libcxx}
62+
)
63+
include(conanbuildinfo)
64+
endif()
65+
4366
conan_basic_setup()

src/CMakeLists.txt

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,31 @@ target_include_directories(
104104
${PROJECT_SOURCE_DIR}/third_party
105105
)
106106

107-
target_link_libraries(
108-
inexor-vulkan-renderer
109-
110-
PUBLIC
111-
${CONAN_LIBS}
112-
Vulkan::Vulkan
113-
)
107+
if(CONAN_LIBS)
108+
target_link_libraries(
109+
inexor-vulkan-renderer
110+
111+
PUBLIC
112+
${CONAN_LIBS}
113+
Vulkan::Vulkan
114+
)
115+
else()
116+
foreach(_LIB ${CONAN_LIBS_RELEASE})
117+
target_link_libraries(
118+
inexor-vulkan-renderer
119+
optimized
120+
121+
${_LIB}
122+
Vulkan::Vulkan
123+
)
124+
endforeach()
125+
foreach(_LIB ${CONAN_LIBS_DEBUG})
126+
target_link_libraries(
127+
inexor-vulkan-renderer
128+
debug
129+
130+
${_LIB}
131+
Vulkan::Vulkan
132+
)
133+
endforeach()
134+
endif()

0 commit comments

Comments
 (0)