Scons использовать опцию Clang -MJ - PullRequest
0 голосов
/ 15 мая 2018

Привет, я пытаюсь собрать compile_commands.json в Windows с системой сборки Scons, но все остальные возможности не сработали.

Я решил использовать опцию Clang -MJ, чтобы сделать это, так как это кажется самым простым доступным решением.

Проблема в том, что не ясно, как мне поступить с системой сборки Scons; В основном я должен добавить -MJ myfilename.o.json к каждой команде сборки. В настоящее время я создаю библиотеку с несколькими исходными файлами, например: library = env.StaticLibrary(target=result_path + '/' + result_name, source=sources)

По существу, в конце у меня должно быть: clang++ -target x86_64-pc-windows-gnu -MJ AABB.o.json -o src/core/AABB.o -c -m64 -g -O3 -std=c++14 -Wwrite-strings -I. -I/c/GodotLibraries/godot_headers -Iinclude -Iinclude/core src/core/AABB.cpp

Заранее спасибо,

`

1 Ответ

0 голосов
/ 15 мая 2018

Вы пытаетесь установить специальные флаги компилятора для текущей среды сборки .Это делается путем добавления новых флагов к правильной переменной среды .В зависимости от того, какой процесс сборки (= Builder ) вы хотите использовать, соответствующие отдельные действия сборки (= Actions ) могут использовать разные переменные. Руководство пользователя содержит Приложение A «Строительные переменные», в котором перечислены переменные по умолчанию и их краткий обзор.

В вашем случае CCFLAGS имеет значение и может использоваться следующим образом:

env = Environment()
env.Append(CCFLAGS=['-MJ','AAB.o.json','-m64','-g','-O3'])

env.Program(...)

Таким же образом вы можете заставить SCons использовать компилятор clang, соответственно установив переменную CXX:

env = Environment()
env['CXX']='clang'
env.Append(CCFLAGS=['-MJ','AAB.o.json','-m64','-g','-O3'])

env.Program(...)

Я надеюсь, что это позволяетвы получите общее представление о настройке Builder / Action в SCons : базовая структура выполняемой команды всегда одинакова для каждого Builder , но вы можете повлиять на конечный результат, установив и переписав те переменные среды , которые будут расширены.

...