2012-02-23 126 views
1

我想根据名为CMAKE_SIZEOF_VOID_P的cmake变量的值来控制我的程序的流程。CMake:从BuildSetup.cmake文件中访问变量

要开始了,我想刚才看到这个变量了什么样的价值在多个不同的配置,在我的CMakeLists.txt文件发出以下命令:

message(${CMAKE_SIZEOF_VOID_P}) 

这完美的作品。但是,每当我尝试在BuildSetup.cmake文件上运行上述命令时,我都没有返回值(它只是引发错误)。

重要的是我可以在我的BuildSetup.cmake文件中访问这个变量的值,因为这将帮助我决定传递给编译器的标志和其他参数。

我真的需要的是确定cmake是运行x64编译还是32位编译,所以如果有其他变量(除了这个,因为它没有在BuildSetup.cmake文件中定义)这会给我这个,那么这也适用于我的目的。

任何帮助将不胜感激。谢谢。

+0

你如何运行'BuildSetup.cmake'?它应该由CMakeLists.txt包含()。 – arrowd 2012-02-23 16:55:38

+0

@arrowdodger:它从命令行调用如下: cmake.exe -G“Visual Studio 2008”-C BuildSetup.cmake -Wdev – user1202422 2012-02-23 17:10:10

回答

2

不能使用CMAKE_SIZEOF_VOID_P直到后,你已经调用PROJECT()命令,(我认为这是在PROJECT执行的TRY_COMPILE阶段设置)。

由于您使用cmake -C调用BuildSetup.cmake,所以在您的主CMakeLists.txt中的任何内容之前,都会先解析BuildSetup.cmake的内容。

但是,您可能不应该使用配置文件来确定CMake需要哪些编译器标志,它们确实属于您的CMakeLists.txt中PROJECT()命令之后的某处。

+0

完美!谢谢!我意识到有一种解决方法 - 我可以在调用BuildSetup.cmake(-C)之前传入一个命令行参数(-D),并在我的BuildSetup.cmake中引用它来控制流。 – user1202422 2012-02-23 19:12:40