2010-11-18 46 views
4

我试图创建自己的项目中NewConfiguration:如何创建一个新的配置与CMake的

set (CMAKE_CONFIGURATION_TYPES "Release;RelWithDebInfo;Debug;NewConfiguration" CACHE STRING "Configurations" FORCE) 

但是当我运行CMake的,我有多个错误:

CMake Error: Error required internal CMake variable not set, cmake may be not be 
built correctly. 
Missing variable is: 
CMAKE_SHARED_LINKER_FLAGS_NEWCONFIGURATION 
CMake Error: Error required internal CMake variable not set, cmake may be not be 
built correctly. 
Missing variable is: 
CMAKE_CXX_FLAGS_NEWCONFIGURATION 

我想我失去了一些东西......

我也跟着CMake的常见问题解答:

if(CMAKE_CONFIGURATION_TYPES) 
    set(CMAKE_CONFIGURATION_TYPES Release RelWithDebInfo Debug NewConfiguration) 
    set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING 
    "Reset the configurations to what we need" 
    FORCE) 
endif() 

但同样的错误......

编辑:

如果我做的:

SET(CMAKE_CXX_FLAGS_PLAYERVIEWER "-Wall -Wabi" CACHE STRING "Flags used by the C++ compiler during maintainer builds." FORCE) 
SET(CMAKE_C_FLAGS_PLAYERVIEWER "-Wall -pedantic" CACHE STRING "Flags used by the C compiler during maintainer builds." FORCE) 
SET(CMAKE_EXE_LINKER_FLAGS_PLAYERVIEWER "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING "Flags used for linking binaries during maintainer builds." FORCE) 
SET(CMAKE_SHARED_LINKER_FLAGS_PLAYERVIEWER "-Wl,--warn-unresolved-symbols,--warn-once" CACHE STRING "Flags used by the shared libraries linker during maintainer builds." FORCE) 


set (CMAKE_CONFIGURATION_TYPES "Release;RelWithDebInfo;Debug;PlayerViewer" CACHE STRING "Configurations" FORCE) 

它创建新的配置,但我不能编译。我认为标志不正确。我使用的Visual Studio 2008

谢谢:)

回答

1

尽管CMake的常见问题,看起来像有东西还是有点未实现此功能的要求。甚至还有一个开放的问题:

http://www.cmake.org/Bug/view.php?id=5811

监控这个bug在CMake的bug跟踪系统的东西都更新通知。

2

我刚刚为VS2008创建了6或7个新配置,其中cmake 2.8.4(现在是2.8.5版本发布的几天甚至几个小时)用于简单的hello世界项目。

The reason why your attemps failed what flags are inccorect e.g. they must be /MDd no -MDd 
You notation will work for GCC based compilers, not for VS. 

我建议你的是得到最接近标志设置和修改它,然后

set(CMAKE_CXX_FLAGS_FOO ${CMAKE_CXX_FLAGS_DEBUG}) 
# .. modifiy it - add or remove flags 

还我注意到,有时的CMake并不实际写入的.sln或它并不总是重新加载(当然,我在VirualBox上运行win7可能它是问题的根源)。

我所做的是以下 -

file(GLOB WILL_REMOVE "${CMAKE_CURRENT_BINARY_DIR}/*.vcproj") 
execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${WILL_REMOVE}) 

file(GLOB WILL_REMOVE "${CMAKE_CURRENT_BINARY_DIR}/*.sln") 
execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${WILL_REMOVE}) 

file(GLOB WILL_REMOVE "${CMAKE_CURRENT_BINARY_DIR}/*.user") 
execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${WILL_REMOVE}) 

至少它重新加载文件:)

然而

,有时我需要运行cmake 2〜3次,看看在Visual Studio的新配置(可虚拟盒子,cmake或视觉工作室错误 - 不知道它)。

但是,不管怎样,后2或3

cmake .. 

它工作!!!!

+0

“多次运行...”可能是一个视觉工作室问题,而不是CMake问题。基本上我的经验是,在VS2005和2008(尚未使用2010)中,重新加载项目通常不起作用,所以我总是关闭解决方案并重新打开它。 – 2012-04-17 07:28:38