У меня есть проект, который использует некоторые сторонние библиотеки. Поэтому каждый раз, когда я настраиваю этот проект с помощью CMake, я должен устанавливать каждую запись (путь к сторонней библиотеке) в графическом интерфейсе CMake. Я улучшаю это, заставляя скрипт CMake угадывать путь по этому скрипту (изучите эту технику из OGRE):
# Guess the paths.
set( OGRE_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/Ogre" CACHE STRING "Path to OGRE source code (see http://www.ogre3d.org/tikiwiki/tiki-index.php?page=CMake+Quick+Start+Guide)" )
Поэтому каждый раз, когда я устанавливаю CMake, он автоматически заполняет запись OGRE_SOURCE. Но этого недостаточно. Если источник Ogre не находится в пути
"${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/Ogre"
, то мне нужно открыть и отредактировать сценарий CMake или отредактировать запись в графическом интерфейсе CMake. Я нахожу это довольно неудобным, особенно когда вы ссылаетесь на множество сторонних библиотек.
Поэтому я хочу использовать другой метод: предустановленные настройки для записей из файла - CMake считывает предустановки из файла PresetEntries.txt (который я делаю) и применяет эти предустановки к записям (намного быстрее редактировать путь в текстовом файле, чем в графическом интерфейсе CMake).
Вот мое представление об этом предустановленном файле: PresetEntries.txt
OGRE_SOURCE=E:/Source/ogre
Я обнаружил, что CMake может читать текстовый файл, но если я использую это, мне приходится выполнять манипуляции со строками.
CMake имеет файл CMakeCache.txt для сохранения настроек в графическом интерфейсе CMake, но я хочу, чтобы он был простым: он должен имеет только предустановленные настройки, которые необходимо предварительно установить.
Поэтому мне интересно, поддерживает ли CMake эти предустановленные настройки для записей из файла.
Редактировать: Итак, я прочитал этот вопрос и увидел, что CMake может установить конфигурацию из файла, но это требуется запустить cmake с помощью -C mysettings.cmake, но я хочу, чтобы это было автоматически с графическим интерфейсом CMake - просто отредактируйте файл и нажмите кнопку «Создать» в графическом интерфейсе CMake. Поэтому я хочу уточнить этот вопрос: в моем CMakeLists.txt должен быть такой скрипт:
# Guess the paths.
#I wanna have this function from C++
#https://msdn.microsoft.com/en-us/library/windows/desktop/ms724353%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
GetPrivateProfileString("OGRE", #lpAppName
"OGRE_SOURCE", #lpKeyName
"${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/Ogre", #lpDefault
OGRE_SOURCE_VAR,#lpReturnedString
MAX_PATH, #nSize, may be can reduce this variable
"LibPath.ini") #lpFileName
set( OGRE_SOURCE "${OGRE_SOURCE_VAR}" CACHE STRING "Path to OGRE source code" )
В файле LibPath.ini
[OGRE]
OGRE_SOURCE = "E:/Source/ogre"
Таким образом, пользователь может выбрать, использовать файл ini или нет.
Я не знаю, могу ли я каким-либо образом использовать функцию, аналогичную функции GetPrivateProfileString (C++) в CMake.
Спасибо за чтение
-C
дляcmake
, как описано в этом вопросе/ответе. - person Tsyvarev   schedule 29.10.2017-C
способ. - person Th. Thielemann   schedule 29.10.2017