CMake-Beispiel mit harfbuzz
In diesem Post möchte ich ein kleines Beispiel zeigen, wie man ein C++-Projekt mit harfbuzz kompiliert. Das alles zeige ich in einem CentOS docker Container. Aber das sollte eigentlich keinen Unterschied machen, d.h. das gezeigte Beispiel sollte auch auf einem normalen Linuxsystem funktionieren.
Für dieses Beispiel habe ich ein einfaches “Hello World”-Beispiel genommen, dass man üblicherweise in jedem C++-Anfängerbuch findet. Diese Datei habe ich main.cpp benannt:
#include <iostream> int main(int argc, char **argv) { std::cout << "Hello World!" << std::endl; return 0; }
Obwohl es hier keinen Code gibt der auf die Bibliothek harfbuzz verweist, kann man diesen Code problemlos gegen diese Bibliothek kompilieren / linken. Ich gehe davon aus, dass normalerweise auch der entsprechende Code in den Quelltextdateien zu finden ist, aber für diesen Post ist das nicht vonnöten. Jetzt muss ich nur noch die CMakeLists.txt entsprechend anpassen:
cmake_minimum_required(VERSION 3.0) # Projektname setzen project(harfbuzz_ex1) # Alle Quelltextdateien in eine Variable packen set(SOURCES main.cpp) # Eine ausführbare Datei soll generiert werden ... add_executable(${PROJECT_NAME} ${SOURCES}) # ... mit harfbuzz als abhängige Bibliothek target_link_libraries(${PROJECT_NAME} harfbuzz)
Ist die CMakeLists.txt fertig, kann man mit dem Kompilieren / Linken anfangen:
cmake -G "Unix Makefiles" . make
Beim ersten Versuch das Projekt zu übersetzen, bekam ich diese Fehlermeldung:
sh-4.2# make [ 50%] Linking CXX executable harfbuzz_ex1 /usr/bin/ld: cannot find -lharfbuzz collect2: error: ld returned 1 exit status make[2]: *** [harfbuzz_ex1] Error 1 make[1]: *** [CMakeFiles/harfbuzz_ex1.dir/all] Error 2 make: *** [all] Error 2
Ich hatte die Bibliothek harfbuzz noch gar nicht auf meinem System installiert. Das musste ich natürlich schnell nachholen:
yum install -y harfbuzz-devel
Danach reichte es aus nochmal make aufrufen und schon konnte ich mein Projekt problemlos bauen und ausführen:
sh-4.2# make [ 50%] Linking CXX executable harfbuzz_ex1 [100%] Built target harfbuzz_ex1 sh-4.2# ./harfbuzz_ex1 Hello World!
Ein Gedanke zu „CMake-Beispiel mit harfbuzz“
Hallo und vielen Dank für den hilfreichen Artikel! Toller Tipp.