c++ - cmake:CMAKE_REQUIRED_FLAGS 和以 "/D"开头的标志

标签 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 指示不应将字符串解析为编译定义?

最佳答案

将我的评论变成答案

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

set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

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

引用资料

关于c++ - cmake:CMAKE_REQUIRED_FLAGS 和以 "/D"开头的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39130265/

相关文章:

c++ - 如何在 C++ 中从 Kinect 获取 XYZ 坐标

c++ - 设置十六进制数的位数

c++ - CMake:如何清除目标编译选项

c++ - 在 Windows 上使用 MinGW 构建时,cmake FindBoost 找不到 Boost 库

c++ - 我的交叉编译器找不到共享库

c++ - visual studio 找不到 std :map during linkage

c++ - 不死的斐波那契兔子

c++ - 如何开发跨平台的C++项目?

erlang - 尝试为ARM交叉编译Erlang R13B04时失败

只能在 makefile 中使用一个目标文件