2010-11-18 28 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