如何在CMake 3.1中禁用关于cygwin WIN32未定义的警告?

时间:2015-02-23 21:01:57

标签: cmake cygwin

我之前从未使用过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)

然而我仍然收到警告。我该如何摆脱它?

3 个答案:

答案 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特定语法。