我之前从未使用过CMake,但是我尝试了一个不支持任何其他构建系统的IDE(CLion),所以我试试看。我在每次构建开始时收到以下警告:
CMake警告 /cygdrive/c/Users/admin/.clion10/system/cygwin_cmake/share/cmake-3.1.2/Modules/Platform/CYGWIN.cmake:15 (消息):CMake不再在Cygwin上定义WIN32!
(1)如果您只是想构建这个项目,请忽略它 通过在您的设置中设置CMAKE_LEGACY_CYGWIN_WIN32 = 0来警告或安静它 环境或CMake缓存。如果以后配置或构建 发生错误然后这个项目可能已经写下了 假设Cygwin是WIN32。在那种情况下,设置 相反,CMAKE_LEGACY_CYGWIN_WIN32 = 1。
(2)如果您正在开发此项目,请添加
行set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
位于顶级CMakeLists.txt文件的顶部或设置最小值 所需版本的CMake为2.8.4或更高版本。然后教你的项目 在没有WIN32的基础上构建Cygwin
我尝试了两种建议的解决方案。以下是我的CMakeLists.txt文件的前两行:
cmake_minimum_required(VERSION 3.1)
set(CMAKE_LEGACY_CYGWIN_WIN32 0)
然而我仍然收到警告。我该如何摆脱它?
答案 0 :(得分:3)
根据Nils Gladitz(他是在SO?上)在CMake邮件列表上:
发出警告的代码由“project()”运行。 由于您在顶级CMakeLists.txt中没有显式的project()调用,因此CMake会隐式添加一个。 [1]
在要求CMake> = 2.8.4之后显式调用project()的项目文件应该会使警告消失:
cmake_minimum_required(VERSION 2.8.8)
project(Foo)
它似乎有效。
答案 1 :(得分:1)
将set(CMAKE_LEGACY_CYGWIN_WIN32 0)
移至CMakeLists文件的顶部。必须在cmake_minimum_required
之前对其进行评估才能在此上下文中正常工作。
答案 2 :(得分:0)
我的cmake文件用于Cygwin和& Linux操作系统。所以对我来说最简单的解决方案是编辑我的Cygwin .bashrc并添加行
export CMAKE_LEGACY_CYGWIN_WIN32=0
现在我不必在我的跨平台cmake文件中保留Cygwin特定语法。