Я передал переменную CC
, которая содержит исполняемый файл, который ссылается на компилятор в системе. Мне нужно взять этот исполняемый файл и в конечном итоге вызвать его с некоторыми аргументами ссылки на компилятор.Определить компилятор и использовать флаги, специфичные для компилятора, при вызове
Мой текущий подход кажется очень хрупким:
def guess_compiler(cc):
out = subprocess.check_output((cc, '--version'))
for possible in (b'clang', b'gcc'):
if possible in out:
return possible.decode()
else:
# Fall back to gcc
return 'gcc'
Из этого я использую отображение конкретных аргументов компоновщика я забочусь о:
return {
'clang': '-Wl,-undefined,dynamic_lookup',
'gcc': '-Wl,--unresolved-symbols=ignore-all',
}[cc]
Короче говоря, я надеюсь, что есть лучший (менее хрупкий) способ сделать то, что я сделал.
Для тех, кто ищет, почему я хочу что-то вроде этого, в основном для переносимости в a project I'm implementing.
Отредактировано с тем, что я попытался пойти с :) –