我最近使用clion来构建我的项目,我可以使用cmake来构建我的所有项目,但是使用clion构建都失败了。谁能帮我?感谢。
我使用clion版本是2017.2,使用clion捆绑的cmake 3.8.2和gdb 3.5.1。 我的项目结构:
项目
├──项目1
│├──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})
project2的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)
当我使用clion run / debug配置来选择lib3和buld时,它会构建失败,lib1说,或者lib3.so需要lib2。在运行/调试配置中选择lib1和lib2时,我可以使用clion构建lib1和lib2成功
我有另一次尝试,我使用cmake ./,然后make -j 16,它有同样的问题。如果我使用make -j 1,它就会成功。
为什么它不能并行构建? clion默认使用并行构建吗?
最诚挚的问候,
西蒙
答案 0 :(得分:0)
您的CMakeLists.txt不完整,但我想更改lib3的target_link_libraries会解决您的问题
target_link_libraries(lib3 lib1 lib2)
关于您的CLion问题,文件 - >设置 - >构建,执行,部署 - > cmake->构建选项
在这里,您可以配置是否要使用并行构建