如何通过CMakeLists配置让当前项目可引入其他目录项目的头文件?
CMake头文件可见性配置方案
- 第一步:修改
project/driver/CMakeLists.txt,给DriverHeaders目标添加公开头文件搜索路径,追加以下内容:
# 若driver.h存放在driver下的include子目录,可将路径替换为 ${CMAKE_CURRENT_SOURCE_DIR}/include target_include_directories(DriverHeaders PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
这里的PUBLIC属性会自动把该路径同步给所有链接了DriverHeaders的目标,不需要在consumer的配置里重复声明路径。
- 第二步:确认根目录CMakeLists.txt按顺序引入子模块,确保先声明driver目标再引入consumer:
cmake_minimum_required(VERSION 3.10) project(MyRootProject CXX) # 先添加driver子目录,保证consumer能找到DriverHeaders目标 add_subdirectory(driver) add_subdirectory(consumer/include/src)
- 第三步:修正consumer的CMakeLists.txt拼写错误,第一行的
prject修改为正确的project。
配置完成后重新生成构建系统编译即可正常引入driver.h。
内容的提问来源于stack exchange,提问作者user3243499
相关产品推荐
相关产品推荐

