我正在尝试使用CMake交叉编译库。目标平台是非标准的。库有几个try_compile
命令。特别是CheckTypeSize.cmake中的那些失败。为了使编译成功,我需要更改那些try_compile
命令使用的标志和链接库(我不想修改CMake安装)。似乎(未记录的)CMAKE_REQUIRED_LIBRARIES
和CMAKE_REQUIRED_FLAGS
在该模块中使用。在工具链文件中,我这样做:
set(CMAKE_REQUIRED_FLAGS "/DLL")
不幸的是,我想设置一个以/D
开头的标志(在本例中为/DLL
)。当我这样做时,变量被转换为/D LL
。是否有任何方法可以向CMake表明字符串不应该被解析为编译定义?
答案 0 :(得分:2)
将我的评论转化为答案
请不要使用内部CMake命令。在我的案例中我的建议 - try_compile
不在交叉编译环境中工作而链接器正在抛出错误 - 是更新到CMake 3.6并添加
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
然后CMake的try_compile
将只尝试静态库链接(而不是可执行文件)。
<强>参考强>