2016-03-01 55 views
1

我在Windows 7 64位下的cygwin控制檯上使用cmake。但cmake變量CYGWINhttps://cmake.org/cmake/help/v3.3/variable/CYGWIN.html)未定義。我錯過了什麼嗎?CMAKE沒有定義CYGWIN變量

例如,這裏是我的CMakeLists.txt:

message("CYGWIN: ${CYGWIN}") 
message("CMAKE SYSTEM: ${CMAKE_SYSTEM_NAME}") 
project (foo CXX) 

我勞克在cygwin控制檯,並做到:

cmake path/to/my/CMakeLists.txt 

選定的輸出:

> CYGWIN: 
> CMAKE SYSTEM: 
> -- The CXX compiler identification is GNU 4.9.2 
> 
> (a warning about the WIN32 variable not being defined by cmake anymore) 
> 
> -- Check for working CXX compiler: /usr/bin/x86_64-w64-mingw32-g++.exe 
> -- Check for working CXX compiler: /usr/bin/x86_64-w64-mingw32-g++.exe -- works 
> -- Detecting CXX compiler ABI info 
> -- Detecting CXX compiler ABI info - done 
> -- Detecting CXX compile features 
> -- Detecting CXX compile features - done 
> -- Check for working C compiler: /usr/bin/x86_64-w64-mingw32-gcc.exe 
> -- Check for working C compiler: /usr/bin/x86_64-w64-mingw32-gcc.exe -- works 
> -- Configuring done 
> -- Generating done 
> -- Build files have been written to: /foo/directory 

配置:

  • uname CYGWIN_NT-6.1
  • cmake版本3.3.2(CMake套件由Kitware(kitware.com/cmake)維護和支持。
+0

如果移動這些* *後的'項目()'命令,會發生什麼? CMake將其大部分內部東西設置爲'project()'的一部分。 – Angew

+0

如果我在project()命令後移動它們,它可以工作,謝謝!但是對我來說已經太遲了,因爲我想在調用project()之前指定CYGWIN的編譯器。 – Drude

+0

通常,指定編譯器應該是運行CMake(用戶或腳本)的人的工作,而不是項目的工作。 CMake應該從已經配置好的環境中運行。 – Angew

回答

2

CYGWIN cmake的變量由project()命令定義。在message命令之前移動它可以解決問題。

的CMakeLists.txt:

project(foo CXX) 
message("CYGWIN: ${CYGWIN}") 
message("CMAKE SYSTEM: ${CMAKE_SYSTEM_NAME}") 

相關的輸出:

> -- The CXX compiler identification is GNU 4.9.2 
> (a lot of talking) 
> CYGWIN: 1 
> CMAKE SYSTEM: CYGWIN