2017-09-29 347 views
1

我最近使用clion來構建我的項目,我可以使用cmake來構建我的所有項目,但是使用clion構建所有失敗。誰能幫我?謝謝。clion build失敗,cmake命令在並行構建失敗時建立成功

我使用的版本是2017.2,使用clion捆綁cmake 3.8.2和gdb 3.5.1。 我的項目結構:

項目
├──PROJECT1
│├──SRC
│└──的CMakeLists.txt
├──項目2
│├──SRC
│└─ ─的CMakeLists.txt
├──項目3
│├──SRC
│└──的CMakeLists.txt
└─ ─CMakeLists.txt

項目的CMakeLists.txt是:

add_subdirectory(./project1) 
add_subdirectory(./project2) 
add_subdirectory(./project3) 

PROJECT1的的CMakeLists.txt用來構建靜態了lib1.a:

aux_source_directory(./src ${LIB1_SRC}) 
include_directories(./src ${LIB1_INC}) 
add_library(lib1 STATIC ${LIB1_SRC}) 

項目2的的CMakeLists.txt用它來建立靜態LIB2。 a:

aux_source_directory(./src ${LIB2_SRC}) 
include_directories(./src ${LIB2_INC}) 
add_library(lib2 STATIC ${LIB2_SRC}) 

project3的CMakeLists.txt需要鏈接lib1.a和lib2.a才能構建共享庫lib3的.so:

aux_source_directory(./src ${LIB3_SRC}) 
include_directories(./src ${LIB3_INC}) 
add_library(lib3 SHARED ${LIB3_SRC}) 
target_link_libraries(lib3 ${LIB1_PATH}/lib1.a ${LIB2_PATH}/lib2.a) 
set_property(TARGET lib3 PROPERTY LINK_DEPENDS ${LIB1_PATH}/lib1.a ${LIB2_PATH}/lib2.a) 

當我使用克利翁運行/調試配置選擇LIB3和球泡,它會構建失敗,說LIB1,或者有時需要LIB2通過lib3.so.我可以用克利翁建立LIB1和LIB2 sucess選擇運行/調試配置

LIB1和LIB2時,我有一個又一個嘗試,我用cmake的./,然後進行-j 16,它有同樣的問題。如果我使用make -j 1,它會創建成功。
爲什麼它不能並行構建? clion默認使用並行構建嗎?

最好的問候,
西蒙

回答

0

你的CMakeLists.txt是不完整的,但我想改變target_link_libraries對LIB3這應該解決您的問題

target_link_libraries(lib3 lib1 lib2) 

關於你的克利翁的問題,文件 - >設置 - >構建,執行,部署 - > cmake->構建選項

這裏你可以配置,如果你想使用並行構建

+0

target_link_libraries(lib3 lib1 lib2)和target_link_libraries(lib3 $ {LIB1_PATH} /lib1.a $ {LIB2_PATH} /lib2.a)有什麼區別,我的只是添加完整的lib路徑和一個.a;因爲我可以使用cmake構建成功,而不是並行構建。我試過了,正如你所說的那樣,與之前的 – simon

+0

一樣,當刪除.a,cmake ./ && make不能成功時,所以.a無法刪除 – simon

+0

你正在添加一個依賴文件,而它應該是依賴於目標。什麼是錯誤信息? – arved