Eu tenho um pequeno projeto com um Makefile que estou tentando converter para CMake, principalmente para obter experiência com o CMake. Para os fins deste exemplo, o projeto contém um arquivo de origem (C ++, embora eu não ache que a linguagem seja particularmente relevante) e um arquivo de biblioteca estática que copiei de outro lugar. Suponha, para fins de argumentação, que o código-fonte da biblioteca não esteja disponível; Tenho apenas o arquivo .a e o cabeçalho correspondente.
Meu Makefile feito à mão contém esta regra de construção:
main: main.o libbingitup.a
g++ -o main main.o libbingitup.a
que funciona bem. Como faço para dizer ao CMake para reproduzir isso? Não literalmente esse makefile exato, é claro, mas algo que inclui um comando de vinculação equivalente. Tentei maneiras óbvias, mas ingênuas, como
add_executable(main main.cpp libbingitup.a)
ou
add_executable(main main.cpp)
target_link_libraries(main libbingitup.a)
bem como várias coisas com link_directories(.)
ou add_library(bingitup STATIC IMPORTED)
etc., mas nada até agora que resulte em uma ligação bem-sucedida. O que devo fazer?
Detalhes da versão: CMake 2.8.7 no Linux (Kubuntu 12.04) com GCC 4.6.3
fonte
target_include_directories
ouinclude_directories
(o primeiro é a forma preferida, pois é mais específico).Se não quiser incluir o caminho completo, você pode fazer
bingitup
é o mesmo nome que você daria a um destino se criar a biblioteca estática em um projeto CMake:O CMake adiciona automaticamente o
lib
na frente e.a
no final no Linux e.lib
no final no Windows.Se a biblioteca for externa, você pode querer adicionar o caminho para a biblioteca usando
fonte
Eu achei isso útil ...
http://www.cmake.org/pipermail/cmake/2011-June/045222.html
Do exemplo deles:
fonte