Как создать новую конфигурацию с CMake - PullRequest
4 голосов
/ 18 ноября 2010

Я пытаюсь создать NewConfiguration для своего проекта:

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 FAQ:

 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.

Спасибо:)

Ответы [ 2 ]

2 голосов
/ 03 июля 2011

Я только что создал 6 или 7 новых конфигураций для VS2008 с cmake 2.8.4 (сейчас дни или даже часы после выпуска 2.8.5) для простого проекта hello world.

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 или не всегда перезагружается (ну, я запускаю win7 на VirualBoxможет быть, это источник проблем).

я сделал следующее:

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 или visual studio - понятия не имею).

Но, в любом случае, после 2 или 3

cmake ..

РАБОТАЕТ !!!!

1 голос
/ 08 февраля 2011

Несмотря на часто задаваемые вопросы по CMake, похоже, что для этого запроса функции что-то еще не реализовано. Существует даже открытый вопрос:

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

Отслеживайте эту ошибку в трекере ошибок CMake, чтобы получать уведомления об обновлениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...