Du bist nicht angemeldet.

Werbeanzeige

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 723

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

1

18.12.2019, 18:38

NuGet Pakete mit CMake erstellen?

Einen wunderschönen Abend euch allen!

Ich stehe gerade vor der Aufgabe aus einer Library ein NuGeT-Paket zu erstellen.
Das Projekt verwendet CMake, daher scheint CPack als eine gute Wahl dafür.

Leider sind die Beispiele/die Dokumentation etwas unverständlich, deshalb die Frage:
Wie erstelle ich ein NuGet Paket aus folgendem Projekt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
project(example)

add_library(
   geileLibrary
   "${CMAKE_CURRENT_SOURCE_DIRECTORY}/lib.cpp"
)

target_include_directories(
   geileLibrary
   "${CMAKE_CURRENT_SOURCE_DIRECTORY}/include"
)


Hat da jemand evtl. ein einfaches Beispiel parat?
MfG Julien
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Thoran

Alter Hase

Beiträge: 516

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

2

20.12.2019, 18:06

Soweit ich das noch weiß ( ist schon ne Weile her bei mir mit den Installern aus CMake), hängt es davon ab, ob es für Dein Zielpackage (in dem Fall NuGet) einen Generator gibt. Wenn man nach CMake und NuGet googelt kommt man auf die Dokuseite von CMake https://cmake.org/cmake/help/v3.16/cpack_gen/nuget.html . Also CMake in 3.16.2 Version installieren, und CPack konfigurieren im CMakeLists.txt (siehe gängige Tutorials) und am Ende darauf achten, dass der NuGet-Generator verwendet wird und die notwendigen NUGET_* Variablen gesetzt sind.

https://cmake.org/cmake/help/v3.16/cpack_gen/nuget.html

Ich hoffe das hilft.
Thoran
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 723

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

3

22.12.2019, 18:19

Ich habe jetzt in meiner 'CMakeLists.txt' die entsprechenden Variablen gesetzt.
Nun bekomme ich beim aufrufen von "cpack" den Fehler:

Zitat


CPack Error: CPack generator not specified


Rufe ich das ganze nun mit cpack -G Nuget auf,
dann bekomme ich den Fehler

Zitat


CPack Error: CPack project name not specified


Ich habe das jetzt mit mehreren Versionen von CMake sowie auf verschiedenen PCs ausprobiert.
Stets das gleiche Resultat. Habe ich da etwas übersehen?
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Thoran

Alter Hase

Beiträge: 516

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

4

22.12.2019, 18:33

Kannst du mal den CPack-Teil deiner CmakeLists.txt-Datei posten? Das würde es einfacher machen, nachzuschauen was fehlt. So wie das für mich aussieht scheint der Aufruf mit cpack -G "<Generatorname>" korrekt zu sein, aber er kann es deinem CMake Projekt nicht zu ordnen. Ich vermute da fehlt noch eine Anweisung im Skript.
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 723

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

5

22.12.2019, 18:42

Nevermind. Ich habe CMake einfach nicht verstanden :thumbsup:
Bisher habe ich CMake immer nur in Verbindung mit CLion verwendet.

Lösung
Verwendet man das Program von der Kommandozeile,
dann muss man zunächst das Projekt konfigurieren, bauen und dann mit CPack bündeln.

In etwa diese Abfolge von Befehlen:

C-/C++-Quelltext

1
2
3
4
> cmake . -B ./build
> cd build
> cmake --build . --config Release
> cpack -G NuGet
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Werbeanzeige