如何使用#include保持目录结构在cmake中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用#include保持目录结构在cmake中?相关的知识,希望对你有一定的参考价值。
设置项目以保持目录结构与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)
答案
如果将program1中的include目录更改为
target_include_directories (program1 PUBLIC ${PROJECT_SOURCE_DIR})
它将从您的源目录中搜索,因此“libA / fileA.h”将找到它的目标。
以上是关于如何使用#include保持目录结构在cmake中?的主要内容,如果未能解决你的问题,请参考以下文章
在CMake中如何使`TARGET_LINK_LIBRARIES'禁止第三方库代码发出警告?