Есть ли способ указать CMake, что я хочу использовать файл, отличный от CMakeLists.txt? Кажется, я ничего не могу найти.
Проблема, с которой я столкнулся, заключается в том, что мне не разрешено проверять изменения, внесенные в CMakeLists.txt. Еще я часто переключаю ветки.
Я хочу изменить некоторые настройки сборки для своей разработки. Если я отредактирую CMakeLists.txt, git не позволит мне переключать ветки.
Если бы у меня был CMyMakeLists.txt, который мог бы использовать cmake, это решило бы эту проблему. Есть ли способ сделать это?
Что вы имеете в виду, говоря «Я хочу изменить некоторые настройки сборки для моей разработки»? Это что-то вроде CMAKE_CXX_STANDARD
, BUILD_TYPE
и т. д.? Или более сложные изменения? Или структура проекта / настройки проекта меняются?
Связанный: cmake.org/pipermail/cmake/2007-August/016037.html
@Justin Я хочу добавить разные флаги для отладки для разных файлов. Я также отключаю сборку определенных исполняемых файлов, которые уже созданы на сервере. Также вы можете настроить процесс тестирования, запустив только тест, над которым я работаю, а не все.
Если вы можете добавить флаги к каждому файлу, это легко настроить в командной строке. Чтобы отключить сборку определенных исполняемых файлов, сгенерированной системе сборки часто можно указать, чтобы она собирала только определенные цели (make only_my_target
). Для запуска только определенных тестов вместо всего, ctest может сказать, какие тесты запускать
@Justin Я не могу изменить файл CMakeLists.txt.
@Mochan Совершенно верно. Все, что я упомянул, можно сделать, не касаясь файла CMakeLists.txt.
Если вы просто изменяете несколько настроек сборки для разработки ваш, зачем вам это проверять? Кроме того, что мешает вам создать локальную ветку и зафиксировать изменения? Не уверен, что означает «git не буду позволяет мне переключать ветки». Вы делаете локальную ветку первый, тогда фиксируете изменения.
@ Джастин. Он по-прежнему создает библиотеки, зависящие от программы, которую я хочу создать. Я не хочу этого делать, просто используйте готовые. Кроме того, я не могу построить с определенным флагом оптимизации, поэтому я могу отлаживать без большого количества оптимизированных переменных. Я мог бы запустить только тот тест, который хочу, но он не работал. У нас есть немного другой сценарий потока тестирования, и я попытаюсь выяснить, как его обойти.
@Chris Мне нужны изменения для работы в моей ветке. Если я его не зарегистрирую, git не позволит мне переключать ветки без сохранения. Я могу спрятать и распаковать при каждом изменении в ветке, это добавляет много накладных расходов, так как не забывает подготовить правильные файлы и дважды проверить, что я прячу правильные файлы. Это огромное репо с множеством зависимостей.
@Mochan Сделайте свою ветку первый. Скопируйте и вставьте свои текущие изменения (файл CMakeLists.txt и любые другие файлы, которые вам нужны) где-нибудь на рабочем столе или что-то еще, а затем сбросьте все свои изменения. Перейдите к ревизии, над которой вы хотите работать. Создайте ответвление от этой ревизии. На этом этапе необходимо проверить ваше новое местное отделение. Скопируйте и вставьте свои изменения в эту новую ветку, которую вы создали. Зафиксируйте свои изменения ...
В итоге я создал подкаталог mymake
, а затем скопировал туда файл CMakeLists.txt
. Затем я изменил все ссылки на файлы, добавив к ним ..\
.
Затем я внес необходимые изменения в файл cmake.
Я не мог найти способ заставить CMake сменить каталог на один шаг выше. Было сложно добавить все файлы для ..\
, но на данный момент это решает проблему для меня.
Возможный дубликат Может ли CMake распознавать CMakeLists.txt с другим именем (CMakeLists_nightly.txt)?