CMake: include_directories не распространяется из подкаталога - PullRequest
4 голосов
/ 06 января 2012

Я решил включить библиотеку (точнее, yaml-cpp ) в свой проект.Поскольку оба проекта (yaml-cpp и мой) используют CMAKE для сборки, я решил попробовать поместить каталог yaml-cpp в мой корневой каталог и просто использовать add_subdirectory(yaml-cpp) и target_link_libraries(${EXECUTABLE_NAME} foolib yaml-cpp), так как CMakeLists.txt из yaml-cpp ужесодержит

include_directories(${YAML_CPP_SOURCE_DIR}/include)

# ...

add_library(yaml-cpp
    ${sources}
    ${public_headers}
    ${private_headers}
    ${contrib_sources}
    ${contrib_public_headers}
    ${contrib_private_headers}
)

... и у меня все будет в порядке как для включений, так и для цели библиотеки.Но, как оказалось, после компиляции я получаю следующую ошибку:

P: \ zpp \ TheGameShow \ TGS.cpp (16): фатальная ошибка C1083: не удается открыть файл включения: 'yaml-cpp/yaml.h ': Нет такого файла или каталога

... если только я не продублирую строку include_directories(${YAML_CPP_SOURCE_DIR}/include) в своем собственном CMakeLists.txt

Мой вопрос:желаемое поведение?Разве включаемые каталоги не должны распространяться из подкаталогов в корневые каталоги?Я что-то не так делаю?

edit: Я использую Visual Studio 2010 и CMake 2.8.6

1 Ответ

5 голосов
/ 07 января 2012

Да, это желаемое поведение.Ничто не распространяется на высокоуровневый CMakeLists.txt.Единственное исключение - значения кеша (создаются различными find_ * и set(VAR 123 CACHE STRING) и set(VAR 123 PARENT_SCOPE).

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