如何使用#include保持目录结构在cmake中?

时间:2018-04-13 05:45:34

标签: c++ linux cmake

设置项目以保持目录结构与cmake有问题。

我想保留的项目结构:

en_core_web_md

源代码包括示例:

Project
|-libA
|   |-fileA.h
|   |-fileA.cpp
|   |-CMakeLists.txt
|-include
|   |-fileI.h
|-program1
|   |-main.cpp
|   |-CMakeLists.txt
|-CMakeLists.txt

这不起作用。 Cmake无法找到" libA / fileA.h" ,它只有在我创建以下目录结构时才有效:

#include "libA/fileA.h"

如何保持第一个示例中显示的项目结构并将目录名保留在源文件中? (例如#include" libA / fileA.h")

项目cmake:

Project
|-libA
|   |-libA (directory)
|       |-fileA.h
|       |-fileA.cpp
|   |-CMakeLists.txt
|-include
|   |-fileI.h
|-program1
|   |-main.cpp
|   |-CMakeLists.txt
|-CMakeLists.txt

libA cmake:

cmake_minimum_required(VERSION 3.8)
project(A)
include_directories( ${PROJECT_SOURCE_DIR}/include )
add_subdirectory(libA)
add_subdirectory(program1)

Program1 cmake:

set(LIBA_SRC libA/fileA.cpp)
add_library(libA SHARED ${LIBA_SRC})

1 个答案:

答案 0 :(得分:1)

如果将program1中的include目录更改为

target_include_directories (program1 PUBLIC ${PROJECT_SOURCE_DIR})

它将从您的源目录中搜索,因此" libA / fileA.h"会找到它的目标。