Проблемы с CMAKE vars - PullRequest
       9

Проблемы с CMAKE vars

0 голосов
/ 09 февраля 2011

Я использую CMAKE для генерации файлов VS2008 SLN / VCPROJ, но некоторые простые вещи не работают:

1) Это работает: INCLUDE_DIRECTORIES ($ENV{MCS_OGRE_HOME}/OgreMain/include)

Но это нет., когда я делаю это, мои дополнительные директории VC ++ полностью облажаются, скобки и все виды плавают вокруг:

SET (OGRE_PATH $ENV{OGRE_HOME}/OgreMain)
INCLUDE_DIRECTORIES (${OGRE_PATH}/include)

2) Это работает: target_link_libraries( debug $ENV{OGRE_HOME}/lib/OgreMainStatic_d.lib )

Но это не', путь к библиотеке не отображается под путями к библиотекам в VC ++:

LINK_DIRECTORIES($ENV{OGRE_HOME}/lib/)
target_link_libraries( debug OgreMainStatic_d.lib )

Я полагаю, это должно быть что-то простое?

1 Ответ

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

Вместо:

set(OGRE_PATH $ENV{OGRE_HOME}/OgreMain)

Использование:

string(REPLACE "\\" "/" OGRE_PATH "$ENV{OGRE_HOME}/OgreMain")

CMake использует все "/" для разделителей пути на всех платформах.

Кроме того, рекомендуется использовать полные пути (с разделителями "/") в качестве аргументов библиотеки для target_link_libraries вместо указания link_directories. Затем CMake получает весь набор библиотек, связанных с ними, и определяет правильный порядок передачи флагов компоновщика на всех платформах.

Еще один комментарий: похоже, у вас есть библиотека или исполняемый файл с именем «debug» от вашего вызова target_link_libraries. Это правда? Или вам не хватает первого аргумента в вопросе, размещенном здесь?

Должно быть что-то вроде:

target_link_libraries(mylib
  debug /path/to/DebugLib.lib
  optimized /path/to/ReleaseLib.lib)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...