Neues C++-Executable-Projekt mit Conan 1.x initialisieren

English Deutsch

Wichtiger Hinweis: Dieser Beitrag bezieht sich auf Conan 1.x und ist nicht mit der aktuellen Version Conan 2.x kompatibel! Siehe How to initialize C++ project using conan 2.x für eine aktualisierte Version dieses Beitrags!

Führe im Verzeichnis, in dem du das Projekt erstellen möchtest, Folgendes aus (ersetze offensichtlich mypackage überall im Code durch den Namen deines Pakets!)

conan_new_executable.sh
conan new mypackage/1.0.0 -s

-s ist hier wichtig. Es teilt Conan mit, dass der Quellcode im Projektverzeichnis verfügbar ist und nicht über Git usw. heruntergeladen werden soll.

Dies initialisiert ein Shared-Library-Projekt, das wir nun modifizieren, um ein Executable zu bauen.

Öffne zuerst src/CMakeLists.txt und ändere add_library() zu add_executable(), beispielsweise

CMakeLists.txt
add_library(mypackage mypackage.cpp)

zu

CMakeLists.txt
add_executable(mypackage mypackage.cpp)

Nun modifizieren wir conanfile.py, um das Executable korrekt zu bauen & zu installieren:

conanfile.py
    def package(self):
        self.copy("*.h", dst="include", src="src")
        self.copy("*.lib", dst="lib", keep_path=False)
        self.copy("*.dll", dst="bin", keep_path=False)
        self.copy("*.dylib*", dst="lib", keep_path=False)
        self.copy("*.so", dst="lib", keep_path=False)
        self.copy("*.a", dst="lib", keep_path=False)
    def package_info(self):
        self.cpp_info.libs = ["NoxecoDB"]

mit

conanfile.py
    def package(self):
        self.copy("mypackage", src="bin", dst="bin", keep_path=False)

    def package_info(self):
        self.env_info.PATH = os.path.join(self.package_folder, "bin")

    def deploy(self):
        self.copy("mypackage", dst="bin", src="bin")

und füge

conanfile.py
import os.path

am Anfang der Datei hinzu

Fügen wir nun eine main()-Funktion zu src/mypackage.cpp hinzu. Ersetze den Inhalt der Datei durch

src/mypackage.cpp
#include <iostream>

int main(int argc, char** argv) {
    std::cout << "Hello World!" <<std::endl;
}

Nun ist es Zeit, die Abhängigkeiten zu installieren & das Projekt zu bauen mit

build.sh
conan install . && conan build .

Das Executable befindet sich in

executable_path.txt
bin/mypackage

Du kannst es ausführen mit

run.sh
./bin/mypackage

was Folgendes ausgibt

output.txt
Hello World!

Ich empfehle außerdem, diese .gitignore hinzuzufügen:

.gitignore
CMakeCache.txt
CMakeFiles/
Makefile
bin/
cmake_install.cmake
conan.lock
conanbuildinfo.cmake
conanbuildinfo.txt
conaninfo.txt
graph_info.json

Check out similar posts by category: C/C++, Conan