【发布时间】:2018-03-11 06:29:41
【问题描述】:
我最近使用 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 运行/调试配置来选择 lib3 和 buld 时,它会构建失败,说 lib1,或者有时 lib3.so 需要 lib2。在运行/调试配置中选择 lib1 和 lib2 时,我可以使用 clion 构建 lib1 和 lib2 成功
我再试一次,我用 cmake ./ ,然后 make -j 16 ,也有同样的问题。如果我使用 make -j 1 ,它会成功。
为什么它不能并行构建? clion 默认使用并行构建吗?
最好的问候,
西蒙
【问题讨论】: