Я хочу настроить файл CMakeLists.txt так, чтобы он мог сгенерировать файл .clang_complete, необходимый плагину vim clang_complete.CMake и clang_complete
Обычно, вы должны сделать это, передав параметр сценарию python, который он предоставляет компилятору и всем параметрам для компиляции. Обратите внимание, что я опускаю фактический каталог cc_args.py для сохранения в пространстве.
cc_args.py gcc test.c -o test -I~/IncludeDirs/
Вы также можете сделать это во время фазы макияжа ...
make CC='cc_args.py gcc' CXX='cc_args.py g++'
Однако, я не уверен в том, как (если это возможно) установить это в файле CMakeLists.txt , Это очень раздражает, когда нужно вводить это в каждый раз, когда я хочу настроить clang_complete. Причина, по которой я хочу сделать это таким образом, заключается в том, что у меня есть несколько проектов, которые я использую для создания файла CMakeLists.txt собственный скрипт, поэтому необходимость писать сценарий для каждого из них или вручную разместить общий вариант - это шаг I Мне бы хотелось избежать.
Я пробовал пару вещей, которые до сих пор придумали ошибки.
Я пытался настроить CMAKE_CC_COMPILER и CMAKE_CXX_COMPILER на строки, похожие на первый i.e.cc_args.py g ++. Ошибки, которые возникают здесь, говорят, что он не может найти компилятор (что понятно).
Следующее, что я пробовал, - это установить переменные компилятора только в cc_args.py и добавить флаг для реального компилятора: достаточно сказать, что это произошло ужасно. CMake сказал, что он не может скомпилировать тестовую программу (учитывая, что скрипт не является компилятором, а тесты не используют установленные мной флаги, я не удивлен этим).
Таким образом, без написания каких-либо других внешних скриптов, которые требуют перемещения, есть ли кто-нибудь, кто может подумать о способе, который может это сделать?
Хм ... Я сделаю снимок и посмотрю, что я могу сделать. Я понятия не имел, что функция file() существует, так что это может решить мою проблему. – AdmiralJonB
Использование 'file()' будет работать, но вам нужно будет сделать это перед вызовом 'project()' и установите для переменной 'CMAKE_CXX_COMPILER_INIT' точку. Вы не можете изменить компилятор, как только он установлен в CMake. – Angew
А, это объяснит еще одну проблему, с которой я столкнулся с компиляторами. У меня была возможность установить компилятор, который фактически не изменил бы компилятор. – AdmiralJonB