Как добавить CMake включает и библиотеки в Visual Studio Solution? - PullRequest
8 голосов
/ 16 января 2012

Я использую CMake для создания проекта Visual Studio 2010 и файла решения. На самом деле я мог бы установить разные настройки, как уровень предупреждения, и т.д. из CMake. Но я не могу установить дополнительные включения и библиотеки, перечислены на вкладке конфигурации каталога VC ++. На самом деле я должен настроить эти каталоги вручную. Это глупо и скучно ...

Я попытался установить следующие переменные CMake: CMAKE_INCLUDE_PATH, INCLUDE_DIRECTORY но ничего не случилось. Если я открываю проект, дополнительный каталог include решения всегда пуст (указаны только стандартные настройки MSVE).

Я также устал устанавливать эти переменные после создания исполняемого файла, но это также не имеет никакого эффекта.

Это то, что я делаю прямо в шапке cmake файл:

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(${MODULE_NAME})
IF (MSVC)
   # Activate C++ exception handling
   IF (NOT CMAKE_CXX_FLAGS MATCHES "/EHsc")
   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") 
   ENDIF ()

   # Set Warning level always to 4
   IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
     string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
   ELSE ()
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
   ENDIF ()

   #read path of dependency modules  
   file(READ "msvc.deps" MSVC_PROPERTIES)
   STRING(REGEX REPLACE ";" "\\\\;" MSVC_PROPERTIES "${MSVC_PROPERTIES}")
   STRING(REGEX REPLACE "\n" ";" MSVC_PROPERTIES "${MSVC_PROPERTIES}")

   FOREACH(e ${MSVC_PROPERTIES})
     SET(INCLUDE ${INCLUDE} ${e})
     MESSAGE(STATUS "[INFO]: Value ${e}")
   ENDFOREACH(e)
   INCLUDE_DIRECTORIES(${INCLUDE})
ENDIF ()

В файле .deps, который я добавил к пути моих зависимых модулей, разделенная строка:

c:\binrev\development\boost\1.47\includes
c:\binrev\repository\modules\brCore\trunk\includes

Оба успешно прочитаны, но не могут быть установлены как дополнительные включить каталог в моем решении MSVC.

С наилучшими пожеланиями, Адская гончая

Ответы [ 3 ]

8 голосов
/ 16 января 2012

CMake довольно хорошо задокументировано , если я понял ваш вопрос, то, я думаю, вы ищете следующие команды:

Хотя некоторые настройки выполняются путем установки переменных, большинство из них выполняется с помощью команд для добавления определенной информации в части сборки и немного реже путем установки свойств для целей.

2 голосов
/ 16 января 2012

Я считаю, что include_directories ("path") где-то в CMakeLists.txt действительно добавляет путь path к C ++ include.

0 голосов
/ 27 июня 2013

Вы определили переменную «INCLUDE» с помощью инструкции «SET (INCLUDE $ {INCLUDE} $ {e})», но «$ {INCLUDE}» показывает, что переменная была определена ранее. Может быть, вы должны убедиться в этом.

Я простой новичок. Если это неправильно, я чувствую извинение.

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