Есть ли метод set () для цели в современном CMake? - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь добиться того же поведения, что и функция 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.Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...