Поиск правильной конфигурации cmake для библиотеки c ++ - PullRequest
0 голосов
/ 26 июня 2018

Я пытался использовать yaml-cpp в моем проекте.Мне потребовалось полчаса, чтобы правильно связать библиотеку, экспериментируя со следующими именами.После того, как я наконец наткнулся на них в этом файле , я согласился на это:

find_package(yaml-cpp REQUIRED)
include_directories(${YAML_INCLUDE_DIRS})
target_link_libraries(${YAML_CPP_LIBRARIES})

Это работает, но то, как я их искал, кажется безмозглым.

Как можно удаленно определить правильное имя включаемых переменных?Это может быть YAML_LIBS, YAML_LIBRARY, YAML_CPP_LIBRARIES, стандарта нет, верно?Как правильно определить конфигурацию cmake для большинства библиотек c ++?

Спасибо.

1 Ответ

0 голосов
/ 26 июня 2018

Большинство FindXXX.cmake сценариев имеют описание использования вверху (как начинаются комментарии CMake #).То же самое верно для XXXConfig.cmake (или xxx-config.cmake) сценариев.

Команда find_package(XXX) использует один из таких сценариев (тот, который действительно существует).Поэтому, прежде чем использовать этот подход для обнаружения пакета, убедитесь, что вы прочитали описание, «встроенное» в такой скрипт.

В вашем случае файл yaml-cpp-config.cmake (создается в сборке или в каталоге установки).) содержит следующее описание:

# - Config file for the yaml-cpp package
# It defines the following variables
#  YAML_CPP_INCLUDE_DIR - include directory
#  YAML_CPP_LIBRARIES    - libraries to link against

, поэтому правильное использование результатов find_package(yaml-cpp) равно

include_directories(${YAML_CPP_INCLUDE_DIRS})
target_link_libraries(<your-target> ${YAML_CPP_LIBRARIES})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...