我最近使用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默認使用並行構建嗎?
最好的問候,
西蒙
target_link_libraries(lib3 lib1 lib2)和target_link_libraries(lib3 $ {LIB1_PATH} /lib1.a $ {LIB2_PATH} /lib2.a)有什麼區別,我的只是添加完整的lib路徑和一個.a;因爲我可以使用cmake構建成功,而不是並行構建。我試過了,正如你所說的那樣,與之前的 – simon
一樣,當刪除.a,cmake ./ && make不能成功時,所以.a無法刪除 – simon
你正在添加一個依賴文件,而它應該是依賴於目標。什麼是錯誤信息? – arved