2016-09-01 14 views
0

У меня есть файл CMakeLists.txt, который находится под контролем источника. Однако для кросс-компиляции мне нужно сделать много настроек, так что все параметры, такие как -DCMAKE_SYSTEM_PROCESSOR=armhf и т. Д., Не соответствуют пределу командной строки. Чтобы обходной путь, я просто добавил все параметры в файл CMakeLists.txt в корневой каталог. Они выглядят иначе:Обработка дополнительных файлов CMake с CMake

if(TWEAK_PROJECT_XXX) 
    set(CMAKE_SYSTEM_PROCESSOR armhf CACHE STRING "") 
... 
endif() 

Конечно, я не могу зафиксировать эти настройки в контроле источника. Тем не менее, командная строка SVN не позволяет исключить некоторые файлы при принятии патча, как:

svn diff --diff-cmd=diff -x -U999999 > full.diff 

И мне нужен полный дифференциал, так что я не могу использовать TortoiseSVN GUI для создания его (нет такой возможности в GUI, AFAIK). Поэтому я должен вручную модифицировать diff каждый раз, чтобы исключить трюки CMakeLists.txt. Это неудобно.

В качестве решения я собираюсь переместить твики в отдельный файл, а не под контролем источника (и игнорировать его в SVN) и передать некоторую опцию командной строки CMake для обработки этого файла в первую очередь. Это возможно? Как?

+0

Используйте файл кеша и загрузите его через 'cmake -C '. https://cmake.org/cmake/help/v3.6/manual/cmake.1.html – usr1234567

+0

@ usr1234567, я думаю, вы можете опубликовать это как ответ, просто отметив сложную вещь: cmake '-C' вариант должен за ним следует имя файла кэша без пробела, например '-CTweaks.txt'. –

+0

В соответствии с документацией пространство может быть вставлено. Если вы можете воспроизвести это с минимальным примером с последним CMake, напишите ошибку. – usr1234567

ответ

1

CMake предлагает загрузить файл с переменными и их значениями, чтобы использовать его в качестве основы для его кеша.
Использование такой кэш-файл и загрузить его через

cmake -C <cachefile> 

Документация: cmake.org/cmake/help/v3.6/manual/cmake.1.html

Похоже, вы могли бы использовать load_cache но это не соответствует потребностям в вашем конкретном случае.

 Смежные вопросы

  • Нет связанных вопросов^_^