Я использую gnu autotools с моим проектом на C ++ (конфигурация autotools автоматически генерируется eclipse cdt, но я думаю, это не имеет значения). Я использую библиотеки LLVM и сейчас сталкиваюсь с проблемой порядка флагов компоновщика.
По сути, при создании проекта Eclipse выполняет команду «make». Make выполняет много команд, но, наконец, выполняет g ++ компилятор следующим образом:
g++ -DPACKAGE_NAME=\"test\" -DPACKAGE_TARNAME=\"test\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"test\ 1.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"test\" -DVERSION=\"1.0\" -I. `llvm-config --cppflags --ldflags --libs core` -g -O2 -MT test.o -MD -MP -MF .deps/test.Tpo -c -o test.o test.cpp
mv -f .deps/test.Tpo .deps/test.Po
а затем компоновщик:
g++ `llvm-config --cppflags --ldflags --libs core` -g -O2 -o a.out test.o
Проблема в том, что компоновщик не работает, если аргумент «test.o» не находится в начале строки, поэтому он должен быть:
g++ test.o `llvm-config --cppflags --ldflags --libs core` -g -O2 -o a.out
Как изменить это в Makefile.am или любом конфигурационном файле для gnu autotools?
Я не нашел ответа, но до сих пор я обнаружил, что LLVM связан с шаблоном проекта, содержащим пользовательскую систему automake, которая обрабатывает все вещи правильным образом.
Если вы хотите получить доступ к шаблону, вы можете найти его в папке $ LLVMSRC / projects / sample.
Других решений пока нет …