История изменений
Исправление Dr64h, (текущая версия) :
Можно ли использовать $<CONFIG> в имени переменной? Типа ${CMAKE_C_FLAGS_$<CONFIG>}? В каком порядке оно раскрывается?
Неа, подставлять именно к имени переменной нельзя, можно только к строке. Как я понимаю вместо $<CONFIG> подставляется значение только после этапа генерации.
Можно использовать например так:
set(BUILD_CONFIG_DIR ${CMAKE_BINARY_DIR}/$<CONFIG>)
# BUILD_CONFIG_DIR после генерации будет == "/home/username/projects/my_project/build/Debug"
Можно вместо «${CMAKE_C_FLAGS_$<CONFIG>», использовать это:
set(CMAKE_BUILD_TYPE "Debug")
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UCASE)
message(STATUS "CMAKE_C_FLAGS_<CONFIG> == ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UCASE}}")
Но надо учитывать, что при этом переменная «CMAKE_BUILD_TYPE» обязательно должна быть определена, иначе будет ошибка.
Исходная версия Dr64h, :
Можно ли использовать $<CONFIG> в имени переменной? Типа ${CMAKE_C_FLAGS_$<CONFIG>}? В каком порядке оно раскрывается?
Неа, подставлять именно к имени переменной нельзя, можно только к строке. Как я понимаю вместо $<CONFIG> подставляется значение только после этапа генерации.
Можно использовать например так:
set(BUILD_CONFIG_DIR ${CMAKE_BINARY_DIR}/$<CONFIG>)
# BUILD_CONFIG_DIR после генерации будет == "/home/username/projects/my_project/build/Debug"
Можно вместо «${CMAKE_C_FLAGS_$<CONFIG>», использовать это:
set(CMAKE_BUILD_TYPE "Debug")
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UCASE)
message(STATUS "CMAKE_CXX_FLAGS_<CONFIG> == ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UCASE}}")
Но надо учитывать, что при этом переменная «CMAKE_BUILD_TYPE» обязательно должна быть определена, иначе будет ошибка.