clion build失败,cmake命令在并行构建失败时建立成功
我最近使用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默认使用并行构建吗?
最好的问候,
西蒙
你的CMakeLists.txt是不完整的,但我想改变target_link_libraries对LIB3这应该解决您的问题
target_link_libraries(lib3 lib1 lib2)
关于你的克利翁的问题,文件 - >设置 - >构建,执行,部署 - > cmake->构建选项
这里你可以配置,如果你想使用并行构建
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