2015-03-19 3 views
0

Мой cmake --version is 2.8.12.2.Почему -DCMAKE_EXPORT_COMPILE_COMMANDS не создает файл compile_commands.json

настроить мою сборку проекта с этими командами:

cmake ../klein/ -DBUILD_KLEIN_DEPS=1 -DCMAKE_EXPORT_COMPILE_COMMANDS=1 
cmake ../klein/ -DBUILD_KLEIN_DEPS=1 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 
cmake ../klein/ -DBUILD_KLEIN_DEPS=1 -DCMAKE_EXPORT_COMPILE_COMMANDS=on 
CMAKE_EXPORT_COMPILE_COMMANDS=1 cmake ../klein/ -DBUILD_KLEIN_DEPS=1 

Из чистой сборки, и из каталога с существующей успешной сборкой. И хотите увидеть файл compiler_commands.json, но он не отображается.

В какой момент это должно быть создано: после cmake или после make команда? Где это должно быть в ./ или в каталоге ../klein? Мой cmake ничего не говорит об этой опции, хотя он всегда жалуется на неиспользуемые переменные сборки.

Должен ли он работать из «грязной» директории, где я выполнил одну успешную сборку, или она работает только при новом запуске в пустой папке?

Edit: Я использую генератор по умолчанию «Unix Makefiles» на моей машине Ubuntu Linux

edit2: Я не автор проекта под вопросом (я просто хочу, чтобы исследовать он содержит rtags, для которого требуется файл compile_commands.json), и я не очень хорошо знаком с механикой CMake. Однако CMakeLists.txt, вероятно, сконфигурирован как супер-сборка (он действительно загружает и создает зависимости - например, llvm, z3, ...), и включает в себя ExternalProject, однако он также создает сам проект (klein) из источников. Так что это смесь, как я бы сказал.

+0

На первый взгляд, попробуйте -DCMAKE_EXPORT_COMPILE_COMMANDS: BOOL = ON Тип спецификатор имеет важное значение. – StAlphonzo

+0

Hm. Теперь он жалуется на бесполезность: «Предупреждение CMake: Введенные вручную переменные не использовались проектом: CMAKE_EXPORT_COMPILE_COMMANDS' – Necto

+0

Хм, как это ни странно, я чувствую, что это прогресс. Я еще недостаточно знаю о CMAKE_EXPORT_COMPILE_COMMANDS, но не знаю, как вы его используете внутри. Вы можете рассмотреть следующий поток, если он связан с генератором. http://stackoverflow.com/questions/20059670/how-to-use-cmake-export-compile-commands – StAlphonzo

ответ

0

Можете ли вы указать, какой генератор использовать? Быстрое сканирование источника cmake из версии 3.1.0 предполагает, что эта команда по-прежнему доступна только в следующих двух случаях.

if(CMAKE_GENERATOR MATCHES "Unix Makefiles") 

и

if(CMAKE_GENERATOR MATCHES "Ninja") 

, если вы используете Visual Studio непосредственно вам не повезло, если вы хотите добавить патч в CMake. В противном случае я знаю многих разработчиков Windows, которые отправились в ниндзя. Одно из преимуществ заключается в том, что он намного быстрее, чем Visual Studio для построения. Если вы, на самом деле используете Ninja или Unix Make-файлы, то это стоит копать глубже.

+0

Я использую Unix Make-файлы и получаю кучу make-файлов как результат 'cmake'. Я также попробовал генератор ниндзя, как было предложено в упомянутой теме - у меня есть файл для создания ниндзя, но никаких следов compiler_commands.json – Necto

+0

ок, спасибо, тогда я думаю, что это стоит того, чтобы копать. Я попрошу вокруг работы увидеть если кто-то имеет более глубокое понимание этой команды. Это не тот, который я использовал раньше. Может быть, кто-то еще зазвонит, пока мы будем ждать. – StAlphonzo

+1

Для начала, в вашем исходном посте, вы говорите, что используете команду make .... и т. Д. Я предполагаю, что вы имели ввиду cmake, не так ли?Итак, чтобы ответить на ваши другие начальные вопросы: 1) он должен работать на чистом или грязном дереве (ошибки всегда заставляют меня начинать чистку для здравомыслия, хотя) 2) он будет создавать этот файл после команды cmake, прежде чем сделать. И последний вопрос для вас. Является ли ваш проект супербайтом, т. Е. Используя ExternalProject? Когда я настраиваю свои супербайты, я тоже не получаю json-файл. – StAlphonzo

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