当你遇到“cannot specify include directories for target”这类错误时,这通常意味着你在使用某个构建系统(如CMake)时,尝试为某个目标(target)指定包含目录(include directories)的方式不正确或存在配置问题。以下是一些可能的解决步骤和注意事项,帮助你解决这个问题: 1. 确定构建系统或工具 首先,确认你正在使用的构建...
cmake是Linux(这里默认是Ubuntu系统)下常使用的编译C++的工具,而使用cmake就需要先在CmakeLists.txt文件中对编译规则进行。这里介绍常用的三种指令add_library、target_link_libraries和link_directories,该笔记主要参考了cmake官网给的教程,如有需要请访问以下网址: https://cmake.org/cmake/help/v3.1/ 1. add_l...
在target_include_directories目录下,运行cmake .以及make VERBOSE=1,关键输出: $ cmake.……# In parent scope, target main: interface[], normal[/XXX/target_include_directories]$ make VERBOSE=1……/usr/bin/c++-MD-MT CMakeFiles/main.dir/main.cpp.o-MF CMakeFiles/main.dir/main.cpp.o.d-o ...
include_directories(hello-world)include_directories(hello-world/hello)include_directories(hello-world/world) 那么整个工程的源文件在编译时都会增加: -Ihello-world -Ihello-world/hello -Ihello-world/world ... 各级子目录中无需使用target_include_directories()或者include_directories()了。如果此时查看详细的...
这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的...
target_include_directories(mylib PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib> $<INSTALL_INTERFACE:include/mylib> # <prefix>/include/mylib ) 创建可重定位包 请注意,不建议使用依赖项包含目录的绝对路径填充目标的INSTALL_INTERFACE或INTERFACE_INCLUDE_DIRECTORIES。这会将依赖项的包含...
include_directories 将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。 语法格式: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 默认情况下,include_directories命令会将目录添加到列表最后(AFTER选项)。不过,可以通过命令设置CMAKE_INCLUDE_DIRECTORIES_BEFORE...
这个问题严格来说不算是个bug,只能说是cmake的规则设计不合理,不允许对imported target调用target_include_directories命令,在cmake 3.11之前所有版本中都存在。 很早就有报告:https://cmake.org/Bug/view.php?id=15689 解决的办法就是改用set_property或set_target_properties修改INTERFACE_INCLUDE_DIRECTORIES属性,如下...
target_include_directories target_include_directories target_include_directories(<target> [SYSTEM] [BEFORE]<INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])指定编译给定⽬标时要使⽤的包含⽬录或⽬标。切⽬标必须由 or 创建 ...
target_include_directories(hello-world PUBLIC hello) 1. 2. 实际上,这三个关键字指定的是目标文件依赖项的使用范围(scope)或者一种传递 (propagate)。官方说明 可执行文件依赖 libhello-world.so, libhello-world.so 依赖 libhello.so 和 libworld.so。