Durchsuchen nach
Category: CMake

CMake Projekt mit SDL2 und X11

CMake Projekt mit SDL2 und X11

Kürzlich habe ich eine CMakeLists.txt für ein Projekt geschrieben bei dem das Projekt Abhängigkeiten zu den Bibliotheken SDL2 und X11 hat. Die Abhängigkeiten in der CMakeLists.txt zu beschreiben ist recht einfach. Zuerst müssen die Bibliotheken gefunden werden: FIND_PACKAGE(SDL2 REQUIRED) FIND_PACKAGE(X11 REQUIRED) Das Target muss dann noch mit den Bibliotheken gebaut werden: TARGET_LINK_LIBRARIES(<targetname> ${SDL2_LIBRARIES} ${X11_LIBRARIES})

Dependency Management in C++

Dependency Management in C++

Patricia Aas gibt hier einen Vortrag über Dependency Management in C++. Dabei werden kurz Wege gezeigt, wie man mit CMake und anderen Produkten eine Art Dependency Management herstellen kann. Dabei werden auch gute Aspekte und Probleme gezeigt. Der Vortrag ist sehr interessant weil hier aufgezeigt wird, welche Probleme man im Dependency Management in C++ hat.

[CMake] Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)

[CMake] Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)

Manchmal kann es passieren, dass man beim Aufruf von einem CMake Befehl folgende oder ähnliche Fehlermeldung bekommt: — Looking for CURL CMake Error at /usr/local/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR) Call Stack (most recent call first): /usr/local/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) /usr/local/share/cmake-3.24/Modules/FindCURL.cmake:181 (find_package_handle_standard_args) CMakeLists.txt:72 (find_package) CMake konnte dann die Bibliothek cURL auf dem System nicht finden. Um das Problem zu lösen gibt es mehrere Möglichkeiten. Eine Möglichkeit besteht darin das entsprechende Paket auf dem System nachzuinstallieren. Auf einem Ubuntusystem würde…

Weiterlesen Weiterlesen

Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)

Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)

Ich hatte einen Fall bei dem ich ein Projekt mit cmake gebaut habe und diese Fehlermeldung gleich am Anfang kam: Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY) Lösung Die Lösung dafür war die, dass ich den cmake-Befehl anpassen musste: cmake -G “Unix Makefiles” -DGTEST_INCLUDE_DIR=thirdparty/googletest/googletest/include \ -DGTEST_LIBRARY=thirdparty/googletest/lib/libgtest.a \ -DGTEST_MAIN_LIBRARY=thirdparty/googletest/lib/libgtest_main.a .

CMake und CXX_STANDARD

CMake und CXX_STANDARD

In CMake kann man definieren, mit welchem C++-Standard das Projekt gebaut werden soll. Dazu wird die Eigenschaft CXX_STANDARD für ein bestimmtes Target geändert. Das kann z.B. so geschrieben werden: set_property(TARGET executable_name PROPERTY CXX_STANDARD 11) Das kann man an einem einfachen Beispiel auch sehen. Wenn die Beispiel CMakeLists.txt so aussieht: project(cxx_standard_ex1) set(SOURCES main.cpp) add_executable(${PROJECT_NAME} ${SOURCES}) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11) und die dann mit den Befehlen cmake -G “Unix Makefiles” . make VERBOSE=1 aufgerufen werden, dann sieht man in der Ausgabe,…

Weiterlesen Weiterlesen

(Video) Grundsätzliche Funktionsweise von CMake

(Video) Grundsätzliche Funktionsweise von CMake

Durch Zufall bin ich auf ein deutsches Video gestoßen, dass erklärt, wie die Funktionsweise von CMake unter Linux ist (CMake -> Make -> kompiliertes Projekt). Ein weiterer Punkt, warum es sich lohnt CMake zu verwenden und der im Video aber nicht ganz dargestellt wird ist der, dass man aus einer CMakeLists.txt nicht nur ein Makefile generieren kann, sondern z.B. auch eine Solutionsdatei für Visual Studio und andere Buildsysteme.

CMake-Beispiel mit harfbuzz

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;…

Weiterlesen Weiterlesen

Eine statische Bibliothek unter Linux mit CMake erstellen

Eine statische Bibliothek unter Linux mit CMake erstellen

In diesem Post möchte ich ein kleines Beispiel zeigen, wie man eine statische C++ Bibliothek unter Linux mit Hilfe von CMake baut. Dazu habe ich eine sehr einfache C++-Datei namens funcs.cpp erstellt. Die in der Datei enthaltene Funktion add soll zu Beispielzwecken dann in der statischen Bibliothek enthalten sein. int add(int a, int b) { return (a+b); } Die schon erwähnte Funktion add soll zu Beispielzwecken einfach zwei ganze Zahlen addieren. Um die Datei nun in eine statische Bibliothek zu…

Weiterlesen Weiterlesen

Ein Visual Studio 2019 Projekt mit CMake erstellen

Ein Visual Studio 2019 Projekt mit CMake erstellen

Seit der Version 3.14 kann man mit CMake Visual Studio 2019 Projekte erstellen. In diesem Post möchte ich kurz zeigen, wie das möglich ist. Um dieses Beispiel erfolgreich zum Laufen zu bringen, müssen einige Bedingungen erfüllt sein: Visual Studio 2019 muss auf dem Rechner installiert sein. CMake 3.14 (oder höher) muss installiert sein Der Pfad zur cmake.exe muss in der PATH Variable enthalten sein Mehr braucht es auch nicht. Nun will ich aber mit meinem Beispiel fortfahren. Mein Beispielprojekt für…

Weiterlesen Weiterlesen

CMake: The ASM_NASM compiler identification is unknown

CMake: The ASM_NASM compiler identification is unknown

Neulich bekam ich beim Versuch, unter Ubuntu ein Makefile mit Hilfe von CMake zu erstellen, diese Fehlermeldung: — The ASM_NASM compiler identification is unknown — Didn’t find assembler CMake Error at simd/CMakeLists.txt:41 (enable_language): No CMAKE_ASM_NASM_COMPILER could be found. Tell CMake where to find the compiler by setting either the environment variable “ASM_NASM” or the CMake cache entry CMAKE_ASM_NASM_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH. — Configuring incomplete, errors…

Weiterlesen Weiterlesen