我已经能够编写一个 CMakeLists.txt 文件,该文件能够在 Linux 上构建我的 C 项目,但是,在 Windows 上构建该项目时我遇到了很多麻烦。 cmake .. 调用成功,并生成 Visual Studio 2017 项目文件,但构建随后无法定位:
错误 LNK1104 无法打开文件“m.lib”
。在 CMakeLists.txt 文件中,我使用 target_link_libraries(MY_EXECUTABLE m) 尝试链接数学库,该库适用于 Linux,但在 Windows 上会出现上述错误。经过一些研究,在我看来,数学是由 Windows 上的 mscvr 库处理的,而不是像 Linux 上的 libm 处理的,但我不确定如何配置 CMake 文件,以便我可以在两个操作系统上进行构建。
有人知道如何设置它以便能够在两种环境中构建吗?
最佳答案
Visual Studio 不需要也不希望您显式请求链接数学库。在为 Windows 构建时,必须避免将其添加为链接库。那么,您可以使用:
,而不是无条件地执行target_link_libraries(MY_EXECUTABLE m)
IF (NOT WIN32)
target_link_libraries(MY_EXECUTABLE m)
ENDIF()
关于c - 在 Windows 和 Linux 上的 CMake 文件中链接数学库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54935559/