CMake with include and source paths - basic setup

前端 未结 3 1507
无人及你
无人及你 2020-12-07 07:56

I\'m trying to set up a test project looking like my own project just to get things working first and it looks like this:

/MainProject/inc/main.h
/MainProjec         


        
3条回答
  •  日久生厌
    2020-12-07 08:20

    You need a CMakeLists.txt for each source subdirectory. Your structure should look something like this:

    root
    |-MainProject
    | |-inc
    | | '-main.h
    | |-src
    | | |-main.cpp
    | | '-CMakeLists.txt
    | '-CMakeLists.txt 
    |-LibProject
    | |-inc
    | | '-test.h
    | |-src
    | | |-test.cpp
    | | '-CMakeLists.txt
    | '-CMakeLists.txt
    '-CMakeLists.txt
    

    Content of root/CMakeLists.txt:

    project(MyProject)
    add_subdirectory(MainProject)
    add_subdirectory(LibProject)
    

    Content of LibProject/CMakeLists.txt and MainProject/CMakeLists.txt:

    add_subdirectory(src)
    

    Content of LibProject/src/CMakeLists.txt:

    # Notice name prefix of this variable, set by CMake according
    # to value given with "project()" in the root CMakeLists.txt.
    include_directories(${MyProject_SOURCE_DIR}/LibProject/inc)
    add_library(LibProject test.cpp)
    

    Content of MainProject/src/CMakeLists.txt:

    include_directories(${MyProject_SOURCE_DIR}/MainProject/inc)
    # I assume you want to use LibProject as a library in MainProject.
    include_directories(${MyProject_SOURCE_DIR}/LibProject/inc)
    link_directories(${MyProject_SOURCE_DIR}/LibProject/src)
    add_executable(MainProject main.cpp)
    target_link_libraries(MainProject LibProject)
    

    Then configure and build with:

    $ cd root
    $ mkdir build
    $ cd build
    $ cmake ..
    $ make
    

提交回复
热议问题