Neues C++-Executable-Projekt mit Conan 1.x initialisieren
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 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
add_library(mypackage mypackage.cpp)zu
add_executable(mypackage mypackage.cpp)Nun modifizieren wir conanfile.py, um das Executable korrekt zu bauen & zu installieren:
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
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
import os.patham Anfang der Datei hinzu
Fügen wir nun eine main()-Funktion zu src/mypackage.cpp hinzu. Ersetze den Inhalt der Datei durch
#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
conan install . && conan build .Das Executable befindet sich in
bin/mypackageDu kannst es ausführen mit
./bin/mypackagewas Folgendes ausgibt
Hello World!Ich empfehle außerdem, diese .gitignore hinzuzufügen:
CMakeCache.txt
CMakeFiles/
Makefile
bin/
cmake_install.cmake
conan.lock
conanbuildinfo.cmake
conanbuildinfo.txt
conaninfo.txt
graph_info.json