Я пытаюсь добиться того же поведения, что и функция set()
в CMake, но использую цели.Давайте предположим, что у меня есть один основной CMakeList и две подпапки с одним CMakeList каждая.
Foo CMakeLists.txt :
cmake_minimum_required(VERSION 3.8)
add_subdirectory(Bar)
add_subdirectory(Tox)
add_library(foo STATIC main.cpp)
#command to set UseFeatureA=ON
target_link_libraries(foo PUBLIC bar )
target_link_libraries(foo PUBLIC tox)
Bar CMakeLists.txt:
add_library(bar PUBLIC bar.cpp)
if(UseFeatureA) #This has to be true
target_sources(bar PRIVATE coolFeatureA.cpp)
endif()
Tox CMakeLists.txt:
add_library(tox STATIC tox.cpp)
if(UseFeatureA) #This has to be FALSE
target_sources(bar PRIVATE coolFeatureA.cpp)
endif()
Я пробовал target_compile_definition()
в Foo
, но я не знаю, какполучить переменную в Bar
.Что я делаю не так?