cmake:CMAKE_REQUIRED_FLAGS以及以" / D"开头的标志

时间:2016-08-24 18:09:53

标签: c++ cmake cross-compiling

我正在尝试使用CMake交叉编译库。目标平台是非标准的。库有几个try_compile命令。特别是CheckTypeSize.cmake中的那些失败。为了使编译成功,我需要更改那些try_compile命令使用的标志和链接库(我不想修改CMake安装)。似乎(未记录的)CMAKE_REQUIRED_LIBRARIESCMAKE_REQUIRED_FLAGS在该模块中使用。在工具链文件中,我这样做:

set(CMAKE_REQUIRED_FLAGS "/DLL")

不幸的是,我想设置一个以/D开头的标志(在本例中为/DLL)。当我这样做时,变量被转换为/D LL。是否有任何方法可以向CMake表明字符串不应该被解析为编译定义?

1 个答案:

答案 0 :(得分:2)

将我的评论转化为答案

请不要使用内部CMake命令。在我的案例中我的建议 - try_compile不在交叉编译环境中工作而链接器正在抛出错误 - 是更新到CMake 3.6并添加

set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

然后CMake的try_compile将只尝试静态库链接(而不是可执行文件)。

<强>参考