cmake:CMAKE_REQUIRED_FLAGS 和以“/D”开头的标志

cmake: CMAKE_REQUIRED_FLAGS and flags that start with "/D"

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

set(CMAKE_REQUIRED_FLAGS "/DLL")

不幸的是,我想设置一个以 /D 开头的标志(在本例中为 /DLL)。当我这样做时,变量被翻译成 /D LL。有什么方法可以向 CMake 指示不应将字符串解析为编译定义?

将我的评论变成答案

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

set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

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

参考资料