【发布时间】:2017-06-01 09:25:54
【问题描述】:
我有 2 个可执行项目,每个项目都依赖于一个解决方案中的 2 个库(root CMakeLists.txt)。构建没问题,结果我有 2 个库和 2 个可执行文件。但是,当我尝试在 Qt 创建器中打开根 CMakeLists.txt 而不是 4 个项目 (src1, src2, subproject1, subproject2) 和 CMakeLists.txt 时,结果我只有一个名为 "Project" 的项目,其中包括我在 "Project" 容器中的 4 个项目就像这是包含文件夹。
我也无法选择要运行的项目 (Set project "Project" as Active Project),因为这只是一个项目。从 Qt 运行后,MainProject1 运行。
StackOverflow 和谷歌建议为此使用add_subdirectory,但这不起作用。在我的 CMakeLists 的 make 依赖和我已经使用过的几个项目中 add_subdirectory。
Qt version: 5.7.0.
Qt Creator version: 4.0.2.
Ubuntu
请帮我解决这个问题。提前致谢。
项目结构和手动构建和结果:成功
项目结构:
root
src1 (executable which depends from subproject1 and subproject2)
CMakeLists.txt
main.cpp
src2 (executable which depends from subproject1 and subproject2)
CMakeLists.txt
main.cpp
subproject1 (library)
CMakeLists.txt
hellow.cpp
hellow.h
subproject2 (library)
CMakeLists.txt
hellow.cpp
hellow.h
CMakeLists.txt (the root CMakeLists)
构建并显示结果:
mkdir -p build && cd build && cmake .. && make &&
ll src1/MainProject1 && ll src2/MainProject2 && ll subproject1/libsubproject1.a && ll subproject2/libsubproject2.a
结果:
-rwxrwxr-x 1 qqq qqq 13570 Jun 1 10:45 src1/MainProject1*
-rwxrwxr-x 1 qqq qqq 13570 Jun 1 10:45 src2/MainProject2*
-rw-rw-r-- 1 qqq qqq 2820 Jun 1 10:45 subproject1/libsubproject1.a
-rw-rw-r-- 1 qqq qqq 2828 Jun 1 10:45 subproject2/libsubproject2.a
一切正常
CMakeLists.txt
根 CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
add_subdirectory( src1 )
add_subdirectory( src2 )
subproject1/CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(subproject1)
set (sources
./hellow.cpp
./hellow.h
)
add_library(subproject1 STATIC ${sources})
subproject2/CMakeLists.txt
是一样的,但不是subproject1:subproject2
src1/CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(MainProject1)
set (sources
./main.cpp
)
if (NOT TARGET subproject1)
add_subdirectory( ./../subproject1 "${CMAKE_CURRENT_BINARY_DIR}/../subproject1" )
add_subdirectory( ./../subproject2 "${CMAKE_CURRENT_BINARY_DIR}/../subproject2" )
endif()
add_executable(MainProject1 ${sources})
target_link_libraries (MainProject1 subproject1)
target_link_libraries (MainProject1 subproject2)
add_dependencies( MainProject1 subproject1 )
add_dependencies( MainProject1 subproject2 )
src2/CMakeLists.txt
是一样的,但不是MainProject1:MainProject2
在 Qt Creator 中打开:失败
打开根 CMakeLists.txt 并在构建文件夹中配置构建。
项目结构结果(仅1个项目):
root
Project
CMakeLists.txt
src1
src2
subproject1
subproject2
预期(4 个项目):
root
src1
src2
subproject1
subproject2
CMakeLists.txt
构建结果:
cd build && ll src1/MainProject1 && ll src2/MainProject2 && ll subproject1/libsubproject1.a && ll subproject2/libsubproject2.a
-rwxrwxr-x 1 qqq qqq 38670 Jun 1 11:10 src1/MainProject1*
-rwxrwxr-x 1 qqq qqq 38670 Jun 1 11:10 src2/MainProject2*
-rw-rw-r-- 1 qqq qqq 21900 Jun 1 11:10 subproject1/libsubproject1.a
-rw-rw-r-- 1 qqq qqq 21908 Jun 1 11:10 subproject2/libsubproject2.a
构建没问题。
运行项目
MainProject1 已运行。无法选择要运行的项目,因为 Qt Creator 将 root CMakeLists 视为只有一个项目。
注意
【问题讨论】:
标签: c++ qt cmake qt-creator