I have 2 executable projects each of which depends from 2 libraries in one solution (root CMakeLists.txt). Build is ok and as result I have 2 libraries and 2 executable. But when I try to open root CMakeLists.txt in Qt creator instead 4 projects (src1, src2, subproject1, subproject2) & CMakeLists.txt in the root as result I have only 1 project with name "Project" which includes my 4 projects in "Project" container like this is include folders.
Also I cannot select project for run (Set project "Project" as Active Project) since this is only one project. After run from Qt the MainProject1 was run.
StackOverflow and google propoused to use add_subdirectory for this but this does not work. In my CMakeLists's for make depends and several projects I already had used add_subdirectory.
Qt version: 5.7.0.
Qt Creator version: 4.0.2.
Ubuntu
Please help me for fix this. Thanks in advance.
Project structure & manual build & results: Succeed
Project structure:
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)
Build & show results:
mkdir -p build && cd build && cmake .. && make &&
ll src1/MainProject1 && ll src2/MainProject2 && ll subproject1/libsubproject1.a && ll subproject2/libsubproject2.a
Results:
-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
All is ok
CMakeLists.txt
Root 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
Is the same but instead 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
Is the same but instead MainProject1: MainProject2
Open in Qt Creator: Failed
Open root CMakeLists.txt & configure for build in build folder.
Result of project structure (only 1 project):
root
Project
CMakeLists.txt
src1
src2
subproject1
subproject2
Expect (4 projects):
root
src1
src2
subproject1
subproject2
CMakeLists.txt
Result of build:
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
Build is ok.
Run project
MainProject1 was run. Cannot select project for run since Qt Creator perceives root CMakeLists as if it's only one project.