CMAKE связывается с системной библиотекой - PullRequest
4 голосов
/ 09 октября 2011

Мы бы хотели создать общую библиотеку с системой CMAKE. Это что-то вроде:

lib/
  CMakeLists.txt
  src/
    CMakeLists.txt
    module/
      CMakeLists.txt
      module1.c
    foo.c

module1.c нужна стандартная общая библиотека, такая как librt. У нас есть

add_library(module module1.c)
target_link_libraries(module rt)

в подкаталоге module/. Но все равно получение ошибок, которые из librt неизвестны.

Ответы [ 2 ]

7 голосов
/ 09 октября 2011

Если librt связан с -lrt, то в CMake вы можете связать его следующим образом:

target_link_libraries(module -lrt)
4 голосов
/ 10 октября 2011

На самом деле то, что вы делаете, должно работать. Если компилятор не может найти библиотеку, он может просто не быть в стандартных путях библиотеки. Вы можете использовать следующую справку, чтобы указать другой link_directories (-L/some/path параметр для компилятора).

cmake --help-command link_directories

Еще одна полезная вещь, которую вы можете сделать при отладке сборок CMake, это распечатать команды, с которыми он запускает компилятор:

make VERBOSE=1

Затем вы можете взять команды и настроить их вручную. После этого нужно изменить CMAKE_C_FLAGS / include_directories / link_directories

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