From c027615f4d4d86edf2bbcbacb3c5648eb367d446 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Wed, 9 Sep 2026 14:12:17 +0500 Subject: [PATCH] cmake: fix issue building with `rocksdb` on multi-configs Example error that occurred: ``` CMake Error in CMakeLists.txt: IMPORTED_LOCATION not set for imported target "RocksDB::rocksdb" configuration "MinSizeRel". ``` --- cmake/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 256a6e53d7..84d7002398 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -335,9 +335,13 @@ if (WITH_ROCKSDB) # explicit mapping, RelWithDebInfo and MinSizeRel builds would end up linking the # /MDd-flavored rocksdb_d.lib into an /MD (NDEBUG) binary, causing a CRT/runtime-library # mismatch that depends on nothing but that alphabetical ordering. + # + # Important: we're mixing up MinSizeRel to RelWithDebInfo targets and vice versa, because + # multi-config builds always define targets for each config and it has to be able to find a fallback, + # otherwise configuration would fail. set_target_properties(${IFCOPENSHELL_ROCKSDB_IMPORTED_TARGET} PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO "RELWITHDEBINFO;RELEASE" - MAP_IMPORTED_CONFIG_MINSIZEREL "MINSIZEREL;RELEASE" + MAP_IMPORTED_CONFIG_RELWITHDEBINFO "RELWITHDEBINFO;RELEASE;MINSIZEREL" + MAP_IMPORTED_CONFIG_MINSIZEREL "MINSIZEREL;RELEASE;RELWITHDEBINFO" ) target_link_libraries(IFCOPENSHELL_RocksDB INTERFACE ${IFCOPENSHELL_ROCKSDB_IMPORTED_TARGET})