How to configure CMakeLists.txt files of projects for have separated projects in Qt Creator instead one project

Viewed 990

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.

Note

Correspound link to question in forum.qt.io

1 Answers
Related