Библиотека CMAKE не связывается - PullRequest
0 голосов
/ 19 ноября 2011

Почему этот код ничего не дает?

link_directories(${CMAKE_SOURCE_DIR}/libs/mylib1)
message("DIR: ${LINK_DIRECTORIES}")

У меня проблема в Windows, что, хотя я делаю link_directories(), при связывании флаг NO -L... отсутствует. Я создаю цель после команды link_directories, как подсказывает документация.

Ответы [ 3 ]

3 голосов
/ 02 декабря 2011

Используя "link_directories ($ {CMAKE_SOURCE_DIR} / libs / mylib1)" ", вы говорите CMake указать компоновщику искать библиотеки в" $ {CMAKE_SOURCE_DIR} / libs / mylib1 ", когда ему нужно связать библиотеку с простое имя, как в «png» или «zlib».

Однако использование link_directories даже не рекомендуется. Мы всегда рекомендуем использовать target_link_libraries с полным путем к файлам библиотеки, на которые вы хотите сослаться. Затем CMake организует для вас все аргументы -L и -l для компоновщика на всех разных платформах.

Пожалуйста, добавьте больше информации к вашему вопросу, если вам нужна дополнительная помощь. Немного неясно, что вы пытаетесь сделать или чего ожидаете.

2 голосов
/ 19 ноября 2011

Потому что LINK_DIRECTORIES не переменная, а свойство каталога.Вы можете получить его таким образом:

get_directory_property(OUT_VAR LINK_DIRECTORIES)
message(STATUS "DIR: ${OUT_VAR}")

См. документацию .

1 голос
/ 19 ноября 2011

Я не уверен, что вы пытаетесь достичь в целом.

Будет ли target_link_libraries работать лучше в целом?

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