CMake配置:如何避免C++头文件包含使用相对路径?
解决CMake头文件直接引用的配置问题
问题根源
你的CMake配置存在两个关键错误:
target_include_directories使用了INTERFACE关键字,这个关键字仅用于将头文件路径暴露给依赖当前目标的其他目标,当前目标自身无法使用该路径。target_sources语法不完整,缺少目标指定和必要的关键字(如PRIVATE)。
修正后的CMakeLists.txt
cmake_minimum_required(VERSION 3.15) add_executable(testApp) # 用PRIVATE指定当前目标编译时需要的头文件路径 target_include_directories(testApp PRIVATE src) # 正确指定目标并添加源文件,移除重复的file2.cpp target_sources(testApp PRIVATE src/file2.cpp src/module/file1.hpp src/module/file1.cpp src/main.cpp )
关键说明
PRIVATE关键字的作用:告诉CMake,src目录是当前testApp目标编译时的头文件搜索路径,编译器会自动在此目录下查找#include的头文件,因此file1.cpp里直接写#include "file2.hpp"就能找到src/下的对应文件。target_sources的正确写法:必须明确指定目标(此处为testApp),并通过PRIVATE声明这些源文件属于当前目标的私有部分,无需暴露给其他依赖目标。
修改完成后,重新生成构建文件并编译,即可解决头文件找不到的问题。
内容的提问来源于stack exchange,提问作者Nitron_707
相关产品推荐
相关产品推荐

