Как изменить область импортированной библиотеки с помощью CMake - PullRequest
3 голосов
/ 09 марта 2012

CMake вопрос,

Импортированная библиотека имеет область действия в каталоге, в котором она создана, и ниже.

Если я хочу использовать эту библиотеку в родительской области, что мне делать?

например,

top CMakeLists.txt

add_subdirectory(sub)
add_executable(myapp main.cpp)
target_link_libraries(myapp imported_lib)

sub CMakeLists.txt

add_library(imported_lib STATIC IMPORTED)

Спасибо за вашу помощь ~~

Ответы [ 2 ]

1 голос
/ 26 сентября 2017

В отличие от классических библиотек, импортированные библиотеки находятся в каталоге. Это можно изменить с помощью параметров GLOBAL.

Вот выдержка из документации :

Имя цели имеет область действия в каталоге, в котором оно создано, и ниже, но опция GLOBAL расширяет видимость.

Пример:

add_library(imported_lib STATIC IMPORTED GLOBAL)

Насколько я могу судить, эта опция всегда была доступна.

0 голосов
/ 09 марта 2012

Вам не нужно ничего делать, CMake разрешит эту зависимость автоматически.См. Документацию для add_subdirectory :

Если цель, созданная родительским проектом, зависит от цели в подкаталоге, цель зависимого будет включена в систему сборки родительского проекта дляудовлетворить зависимость.

Это в отличие от команд set () и list (), которые требуют передачи явного параметра PARENT_SCOPE.

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