CMake项目两类问题求助:依赖dummy.cc与尖括号头文件检测失败
CMake项目两类问题的解决方案
问题1:必须依赖dummy.cc才能识别C++语言,否则触发「CMake Error: CMake can not determine linker language for target:」错误
- 显式指定目标链接语言:在
add_executable或add_library定义目标后,加一行set_target_properties(你的目标名 PROPERTIES LINKER_LANGUAGE CXX),强制CMake用C++链接器处理这个目标。 - 如果是纯头文件项目(没有.cc源文件),改用
add_library(你的目标名 INTERFACE),INTERFACE类型库不需要源文件,CMake会自动处理语言识别,不会报错。
问题2:尖括号写法的#include找不到头文件
- 在CMakeLists.txt里用
target_include_directories把你的头文件根目录加入目标的包含路径。比如头文件都在项目根目录的include文件夹下,就写target_include_directories(你的目标名 PUBLIC ${PROJECT_SOURCE_DIR}/include)。PUBLIC能让依赖这个目标的其他项目也继承这个包含路径。 - 核对代码里的#include路径:如果头文件
algorithm.hh在include/core下,要么代码里写#include <core/algorithm.hh>,要么把include/core也加入包含路径,直接写#include <algorithm.hh>。
内容的提问来源于stack exchange,提问作者user366312
相关产品推荐
相关产品推荐

