cmake:包含目录根目录

cmake: Include directories root?

本文关键字:根目录 包含目 cmake      更新时间:2023-10-16

我正在尝试为我正在处理的项目设置 cmake,但我有一个目前无法解决的问题。我的项目具有以下文件夹结构:

MotorEngine (root dir)
| CMakeLists.txt
| ThirdParty
|-| SDL2
|-|-| include (contains all header files for SDL2)
|-|-| lib
|-|-|-| x64
|-|-|-|-| SDL2.lib (the library file I need to link with)
| Source
|-| CMakeLists.txt
|-| main.cpp

根 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 2.6)
project(MotorEngine)
# Set an output directory for our binaries
set(BIN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Binaries)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Binaries)
set(THIRDPARTY_PATH ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty)
# Include SDL2
include_directories(${THIRDPARTY_PATH}/SDL2/include)
# Add the engine + third party subdirectory
add_subdirectory(Source)

来源的CMakeLists.txt:

project(MotorEngine)
add_executable(MotorEngine main.cpp)
target_link_libraries(MotorEngine ${THIRDPARTY_PATH}/SDL2/lib/x64/SDL2.lib)

现在,我想实现以下几点,大体上.cpp我想写

#include "SDL2/include/SDL2.h"

但目前我必须写

#include "SDL2.h"

由于稍后会有同名的文件,我需要在它们的文件夹中区分它们。所以最简单的方法是将"第三方"文件夹添加为根目录,这样我就可以使用它 #include,但是

include_directories(${THIRDPARTY_PATH})

不起作用。有什么想法吗?谢谢!

在 k.v. 的帮助下。我能够解决这个问题。我需要在 CMakeList 中添加以下内容.txt在源目录中:

target_include_directories(MotorEngine PUBLIC ${THIRDPARTY_PATH})