【问题标题】:clion build failed,cmake command build sucess while failed when parallel buildclion构建失败,并行构建时cmake命令构建成功而失败
【发布时间】: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 默认使用并行构建吗?

最好的问候,
西蒙

【问题讨论】:

    标签: cmake clion


    【解决方案1】:

    您的 CMakeLists.txt 不完整,但我想像这样更改 lib3 的 target_link_libraries 应该可以解决您的问题

    target_link_libraries(lib3 lib1 lib2)  
    

    关于您的 CLion 问题,File->Settings->Build,Execute,Deployment->cmake->Build options

    这里你可以配置是否要使用并行构建

    【讨论】:

    • target_link_libraries(lib3 lib1 lib2) 和 target_link_libraries(lib3 ${LIB1_PATH}/lib1.a ${LIB2_PATH}/lib2.a) 有什么区别,我的只是添加完整的 lib 路径和一个。一种;因为我可以使用 cmake 构建成功,但不要并行构建。我按你说的试试,和之前一样
    • 删除.a时,cmake ./ && make不能成功,所以.a不能删除
    • 您正在添加对文件的依赖项,而它应该是对目标的依赖项。错误信息是什么?
    猜你喜欢
    • 2011-10-02
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 2022-10-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多