Mam mały projekt z plikiem Makefile, który próbuję przekonwertować na CMake, głównie po to, aby zdobyć doświadczenie z CMake. Na potrzeby tego przykładu projekt zawiera plik źródłowy (C ++, chociaż nie sądzę, aby język był szczególnie odpowiedni) i plik biblioteki statycznej, który skopiowałem z innego miejsca. Załóżmy, że kod źródłowy biblioteki jest niedostępny; Mam tylko plik .a i odpowiedni nagłówek.
Mój ręcznie robiony plik Makefile zawiera następującą zasadę budowy:
main: main.o libbingitup.a
g++ -o main main.o libbingitup.a
co działa dobrze. Jak powiedzieć CMake, aby to odtworzył? Oczywiście nie dosłownie ten plik makefile, ale coś, co zawiera równoważne polecenie łączenia. Próbowałem oczywistych, ale naiwnych sposobów
add_executable(main main.cpp libbingitup.a)
lub
add_executable(main main.cpp)
target_link_libraries(main libbingitup.a)
jak również różne rzeczy z link_directories(.)
lub add_library(bingitup STATIC IMPORTED)
itp., ale jak dotąd nic nie skutkuje udanym powiązaniem. Co mam robić?
Szczegóły wersji: CMake 2.8.7 na Linuksie (Kubuntu 12.04) z GCC 4.6.3
źródło
target_include_directories
lubinclude_directories
(ten pierwszy jest preferowany, ponieważ jest bardziej szczegółowy).Jeśli nie chcesz uwzględniać pełnej ścieżki, możesz to zrobić
bingitup
to ta sama nazwa, którą nadasz celowi, jeśli utworzysz bibliotekę statyczną w projekcie CMake:CMake automatycznie dodaje na
lib
początku i.a
na końcu w Linuksie i.lib
na końcu w Windows.Jeśli biblioteka jest zewnętrzna, możesz dodać ścieżkę do biblioteki za pomocą
źródło
Uważam, że to pomocne ...
http://www.cmake.org/pipermail/cmake/2011-June/045222.html
Z ich przykładu:
źródło