Saya memiliki proyek kecil dengan Makefile yang saya coba ubah ke CMake, kebanyakan hanya untuk mendapatkan pengalaman dengan CMake. Untuk keperluan contoh ini, proyek berisi file sumber (C ++, meskipun menurut saya bahasanya tidak terlalu relevan) dan file pustaka statis yang telah saya salin dari tempat lain. Asumsikan demi argumen bahwa kode sumber ke perpustakaan tidak tersedia; Saya hanya memiliki file .a dan header yang sesuai.
Makefile buatan tangan saya berisi aturan build ini:
main: main.o libbingitup.a
g++ -o main main.o libbingitup.a
yang berfungsi dengan baik. Bagaimana cara memberi tahu CMake untuk mereproduksi ini? Tidak secara harfiah makefile persis ini, tentu saja, tetapi sesuatu yang menyertakan perintah penautan yang setara. Saya sudah mencoba cara yang jelas tapi naif, seperti
add_executable(main main.cpp libbingitup.a)
atau
add_executable(main main.cpp)
target_link_libraries(main libbingitup.a)
serta berbagai hal dengan link_directories(.)
atau add_library(bingitup STATIC IMPORTED)
dll. tetapi sejauh ini tidak ada yang menghasilkan hubungan yang berhasil. Apa yang harus saya lakukan?
Rincian versi: CMake 2.8.7 di Linux (Kubuntu 12.04) dengan GCC 4.6.3
sumber
target_include_directories
atauinclude_directories
(yang pertama adalah cara yang disukai karena lebih spesifik).Jika Anda tidak ingin menyertakan jalur lengkap, Anda dapat melakukannya
bingitup
adalah nama yang sama dengan yang Anda berikan pada target jika Anda membuat pustaka statis dalam proyek CMake:CMake secara otomatis menambahkan bagian
lib
depan dan.a
bagian akhir di Linux, dan.lib
di bagian akhir pada Windows.Jika pustaka eksternal, Anda mungkin ingin menambahkan jalur ke pustaka menggunakan
sumber
Saya menemukan ini membantu ...
http://www.cmake.org/pipermail/cmake/2011-June/045222.html
Dari contoh mereka:
sumber