2013-02-12 28 views
5

Tôi đã có hai thực thi cả hai đều cần phải được liên kết với N thư viện đó đều giống nhau:CMake: Liên kết nhiều thư viện để thực thi hai trong một lệnh

add_executable(MyExe1 main1.cpp) 
add_executable(MyExe2 main2.cpp) 

target_link_libraries(MyExe1 lib1 lib2 lib3 ... libN) 
target_link_libraries(MyExe2 lib1 lib2 lib3 ... libN) 

Vì vậy, tôi phải viết target_link_libraries hai lần; một lần cho MyExe1 và một lần cho MyExe2. Có cách nào để rút ngắn cách một số thư viện phổ biến được liên kết với hai tập tin thực thi khác nhau không? Tôi tự hỏi nếu nó có thể liên kết lib1 ... libN thư viện cho cả hai MyExe1MyExe2 trong một lệnh để tránh sự thừa và làm cho tệp sạch hơn CMake.

Trả lời

7

Bạn có thể sử dụng lệnh set để thiết lập một biến từ một danh sách các đối số:

add_executable(MyExe1 main1.cpp) 
add_executable(MyExe2 main2.cpp) 

set(LIBS lib1 lib2 lib3 ... libN) 

target_link_libraries(MyExe1 ${LIBS}) 
target_link_libraries(MyExe2 ${LIBS}) 
+0

Có cách nào để tạo ra một cmake pseudo-thư viện cho phép bạn xác định lib1AndLib2 vì vậy bạn có thể sử dụng nó trong một cái gì đó như "target_link_libraries (MyExe1 lib1AndLib2)"? –

Các vấn đề liên quan