У меня есть небольшой проект с Makefile, который я пытаюсь преобразовать в CMake, в основном, чтобы получить опыт работы с CMake. Для целей этого примера проект содержит исходный файл (C ++, хотя я не думаю, что этот язык особенно актуален) и файл статической библиотеки, который я скопировал из другого места. В качестве аргумента предположим, что исходный код библиотеки недоступен; У меня есть только файл .a и соответствующий заголовок.
Мой Makefile, сделанный вручную, содержит это правило сборки:
main: main.o libbingitup.a
g++ -o main main.o libbingitup.a
который отлично работает. Как мне сказать CMake воспроизвести это? Не буквально, конечно, этот make-файл, но что-то, что включает эквивалентную команду связывания. Я пробовал очевидные, но наивные способы, например
add_executable(main main.cpp libbingitup.a)
или
add_executable(main main.cpp)
target_link_libraries(main libbingitup.a)
а также различные вещи с link_directories(.)
и add_library(bingitup STATIC IMPORTED)
т. д., но пока ничего, что привело бы к успешной связи. Что мне делать?
Сведения о версии: CMake 2.8.7 для Linux (Kubuntu 12.04) с GCC 4.6.3
источник
target_include_directories
илиinclude_directories
(первый вариант предпочтительнее, так как он более конкретен).Если вы не хотите включать полный путь, вы можете сделать
bingitup
- это то же имя, которое вы дадите цели, если создадите статическую библиотеку в проекте CMake:CMake автоматически добавляет
lib
начало и.a
конец в Linux и.lib
в конце в Windows.Если библиотека внешняя, вы можете добавить путь к библиотеке, используя
источник
Я нашел это полезным ...
http://www.cmake.org/pipermail/cmake/2011-June/045222.html
Из их примера:
источник