Für Cross-Compiling-Projekte für einen Mikrocontroller (msp430 von TI) verwende ich den clang ++ und den mspgcc von TI. Grundsätzlich ist der Übersetzungsvorgang wird wie folgt:Zwei Werkzeugketten mit cmake verwenden
file.cpp
--(llvm clang++)--> file.ll
--(llvm llc)--> file.s
--(ti msp430-elf-gcc)--> file.o
--(ti msp430-elf-gcc)--> a.out (executable)
Was ich tun möchte, ist meine Projekte mit cmake kompilieren. Ich habe über die Toolchain-Option für cmake gelesen (z. B. https://cmake.org/cmake/help/v3.6/manual/cmake-toolchains.7.html?highlight=toolchain), aber es passt nicht meine Situation.
Irgendwelche Möglichkeiten, es zu erreichen?
Die genauen Schritte für die Erstellung sind:
/usr/local/opt/llvm/bin/clang++ -I ~/ti/gcc/include/ -I ~/ti/gcc/msp430-elf/include/ -D__MSP430F5529__ -S -emit-llvm -std=c++11 --target=msp430 -Wall -c file.cpp -o file.ll
/usr/local/opt/llvm/bin/llc -march=msp430 file.ll -o file.s
~/ti/gcc/bin/msp430-elf-gcc -Wall -D_GNU_ASSEMBLER_ -I ~/ti/gcc/include/ -mmcu=msp430f5529 -mcpu=430 -x assembler -Wa,-gstabs -c file.s -o file.o
~/ti/gcc/bin/msp430-elf-gcc -mmcu=msp430f5529 -B ~/ti/gcc/include/ -mcpu=430 -Wl,-Map=a.out.map file.o -o a.out
Es klingt wie Sie sprechen über eine längere Toolchain (mehr Schritte, aber immer noch im Wesentlichen sequentiell im Gegensatz zu parallel/orthogonal), anstatt mehrere Toolchains. –
Wie @ChintalagiriShashank gesagt hat, müssen Sie nur verschiedene Tools für verschiedene Schritte angeben: 'clang ++' als C++ - Compiler, 'llc' als .ll-Compiler (was auch immer das bedeutet),' msp430-elf-gcc' als ASM-Compiler und als Linker . – Tsyvarev
Ja, ich nehme Werkzeuge aus verschiedenen Werkzeugketten, um eine neue längere Werkzeugkette zu bilden. Ich weiß, wie man den C++ - Compiler, den ASM-Compiler und den Linker setzt. Aber wie sage ich cmake, um den zusätzlichen Schritt vom .ll (llvm intermediate assembler) zur .s (target assembler) Datei hinzuzufügen? –