У меня есть файл 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 для обработки этого файла в первую очередь. Это возможно? Как?
Используйте файл кеша и загрузите его через 'cmake -C'. https://cmake.org/cmake/help/v3.6/manual/cmake.1.html –
usr1234567
@ usr1234567, я думаю, вы можете опубликовать это как ответ, просто отметив сложную вещь: cmake '-C' вариант должен за ним следует имя файла кэша без пробела, например '-CTweaks.txt'. –
В соответствии с документацией пространство может быть вставлено. Если вы можете воспроизвести это с минимальным примером с последним CMake, напишите ошибку. – usr1234567