首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有CMake include_directories系统dirs前缀的等于字符(=)

具有CMake include_directories系统dirs前缀的等于字符(=)
EN

Stack Overflow用户
提问于 2014-06-18 14:41:44
回答 2查看 1.4K关注 0票数 0

是否有一种方法可以让CMake include_directories包含带有相等(=)字符的系统目录前缀?这样我就可以让gcc在相关的dirs前加上-isysroot标志,以便进行交叉编译。

当我尝试包含带有等于(=)前缀的路径时,假设为相对路径并使用当前源路径作为前缀:

代码语言:javascript
复制
include_directories(AFTER SYSTEM "=/usr/include")

结果:

代码语言:javascript
复制
-isystem /root/opencv-2-4-9/opencv/modules/highgui/=/usr/include/

我期望的是:

代码语言:javascript
复制
-isystem=/usr/include/
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-19 11:00:18

我检查了CMake的源代码( 2.8.12.2和3.0.0);在非windows系统中,CMake似乎添加了所有不以'/‘开头的路径。

生成器表达式是唯一的例外。如果path以"$<“开头,那么它跳过路径的前缀,并且在生成器表达式的计算之后没有前缀。因此

代码语言:javascript
复制
include_directories(AFTER SYSTEM "$<1:=>/usr/include")

生成

代码语言:javascript
复制
-isystem =/usr/include/

这似乎至少适用于CMake 3.0.0。当然,您应该将CMAKE_SYSROOT设置为gcc的前缀,并给出正确的路径。

代码语言:javascript
复制
set(CMAKE_SYSROOT /usr/arm-linux-gnueabi)
票数 3
EN

Stack Overflow用户

发布于 2014-06-19 08:25:56

将它放在一个命令中:

代码语言:javascript
复制
set_target_properties(<targetname> PROPERTIES COMPILE_FLAGS "-isystem=/usr/include/")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24288504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档