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

问题描述 投票:1回答:1

设置项目以保持目录结构与cmake时出现问题。

我想保留的项目结构:

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

源代码包括示例:

#include "libA/fileA.h"

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

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

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

项目cmake:

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

libA cmake:

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

Program1 cmake:

set (PROGRAM1_SRC main.cpp)
add_executable (program1 ${PROGRAM_SRC})
target_link_libraries (program1 libA)
target_include_directories (program1 PUBLIC ${PROJECT_SOURCE_DIR}/libA)
c++ linux cmake
1个回答
1
投票

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

target_include_directories (program1 PUBLIC ${PROJECT_SOURCE_DIR})

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

© www.soinside.com 2019 - 2024. All rights reserved.