Удалить прошлые и последующие месяцы из текущего месяца

Сначала вызов:

include(FindPkgConfig)

следует заменить на:

find_package(PkgConfig)

Вызов find_package() более гибкий и позволяет такие опции, как REQUIRED , которые делают все автоматически, что нужно было бы сделать вручную с помощью include().

Во-вторых, при необходимости следует избегать ручного вызова pkg-config. CMake поставляется с богатым набором определений пакетов, который находится в Linux под /usr/share/cmake-3.0/Modules/Find*cmake. Они предоставляют больше опций и выбора для пользователя, а затем необработанный вызов pkg_search_module().

Что касается упомянутой гипотетической команды target_use(), то на самом деле CMake уже имеет такую ​​встроенную функцию с PUBLIC | PRIVATE | ИНТЕРФЕЙС. Вызов типа target_include_directories(mytarget PUBLIC ...) приведет к тому, что каталоги включений будут автоматически использоваться в каждой цели, которая использует mytarget, например. target_link_libraries(myapp mytarget). Однако этот механизм, по-видимому, предназначен только для библиотек, созданных в файле CMakeLists.txt, и не работает для библиотек, приобретенных с помощью pkg_search_module(). Для этого может быть использован вызов add_library(bar SHARED IMPORTED), но я еще не изучил его.

Что касается основного вопроса, то здесь это работает в большинстве случаев:

find_package(PkgConfig REQUIRED)
pkg_check_modules(SDL2 REQUIRED sdl2)
...
target_link_libraries(testapp ${SDL2_LIBRARIES})
target_include_directories(testapp PUBLIC ${SDL2_INCLUDE_DIRS})
target_compile_options(testapp PUBLIC ${SDL2_CFLAGS_OTHER})

SDL2_CFLAGS_OTHER содержит определения и другие флаги, необходимые для успешного компиляции. Однако флаги SDL2_LIBRARY_DIRS и SDL2_LDFLAGS_OTHER все еще игнорируются, не знаю, как часто это станет проблемой.

Подробнее документ в http://www.cmake.org/cmake/help /v3.0/module/FindPkgConfig.html

19
задан rid 2 October 2011 в 17:37
поделиться