Я решил включить в свой проект библиотеку (точнее, yaml-cpp). Так как проекты (YAML-CPP и шахтные) используют CMake для строительства я решил попробовать и поместить каталог YAML-CPP в моей корневой директории и просто использовать add_subdirectory(yaml-cpp)
и target_link_libraries(${EXECUTABLE_NAME} foolib yaml-cpp)
, так как CMakeLists.txt YAML-CPP уже содержитCMake: include_directories не распространяется из подкаталога
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): fatal error C1083: Cannot open include file: 'yaml-cpp/yaml.h': No such file or directory
... если я не дублировать линии include_directories(${YAML_CPP_SOURCE_DIR}/include)
в моей CMakeLists.txt
Мой вопрос: Является ли это желаемое поведение? Не следует ли распространять каталоги include из подкаталогов в корневые каталоги? Я делаю что-то неправильно?
редактировать: Я использую Visual Studio 2010 и CMake 2.8.6
И это плохой дизайн. Я думаю, что должен быть явный способ распространить его на более высокий уровень. – Lothar