Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

1

19.01.2015, 16:49

CMake, direkt builden?

Ich habe mich entschieden mal in CMake reinzuschauen. Jedoch funktioniert es bei mir einfach nicht.

Mein C++ Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//
// YetAnotherGame by Julién aka Techie
//

#include <iostream>

int main()
{

    std::cout << "Hello CMake, you finally build me." << std::endl;
    std::cin.get();
    
    return 0;

}


Meine CMakeLists.txt:

C-/C++-Quelltext

1
2
3
4
5
6
7
cmake_minimum_required(VERSION 2.8)

project(YetAnotherGame)

set(CODE main.cpp)

add_executable(YetAnotherGame ${CODE})


Ist es möglich direkt ein Build zu erstellen? Also ohne das CMake meinen Arbeitsplatz mit VSC++ Dateien zumüllt?

Wenn ich "cmake --build YetAnotherGame" mache, dann bekomme ich die Fehlermeldung, die besagt, dass der Cache nicht geladen worden konnte. Das geht nur wenn ich brav vorher "cmake YetAnotherGame" aufrufe.
Gibt es da eine Möglichkeit das Ding direkt zu builden?

Gruß Julién
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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

19.01.2015, 18:13

CMake ist kein Buildsystem sondern ein Buildsystemgenerator, gewissermaßen also ein Metabuildsystem. Die Antwort auf deine Frage lautet also: Nein, das geht rein prinzipiell nicht. Mein persönlicher Rat: Tu dir CMake nicht an, wenn es sich irgendwie vermeiden lässt...

3

19.01.2015, 19:23

Der Trick liegt darin, die CMake die Dateien nicht in deinen Source-Ordner generieren zu lassen. Dann hast du einen aufgeräumten Ordner mit dem Quellcode und einen zugemüllten Ordner mit Projektdateien. Aber du brauchst da nie reinzusehen und wenn es dich nervt, löscht du ihn einfach.
Und um ehrlich zu sein: Wieso sollte man mit CMake direkt bauen wollen, das ist doch aus Visual-Studio heraus viel hübscher und angenehmer.

Ansonsten: Ich muss dot einerseits zustimmen, CMake ist viel zu oft ein unglaublicher Krampf. Aber toll wird es, wenn man mehrere Plattformen unterstützen will. Oder auf mehreren Rechnern arbeitet, potentiell mit unterschiedlichen VS-Versionen. Und extrem viele Open-Source Projekte setzen es ein. Es mag kein guter sein, aber CMake ist mehr Standard (für C++) als sonst irgendetwas auf diesem Planeten.
Lieber dumm fragen, als dumm bleiben!

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

4

19.01.2015, 19:48

Für eine solch einfach Applikation reichen die folgenden Commands:

Beispiel Visual Studio 12 x86

Quellcode

1
2
3
4
5
6
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
cd D:\MyProject\
mkdir build
cd build
cmake -G"NMake Makefiles" ../
nmake
Falls du viele Source Dateien hast, kann ich nur empfehlen jom anstelle also "drop-in Replacement" von NMake zu verwenden.

Beispiel MinGW

Quellcode

1
2
3
4
5
6
set PATH=C:\MinGW\bin;%PATH%
cd D:\MyProject\
mkdir build
cd build
cmake -G"MinGW Makefiles" ../
mingw32-make -j4


Und wenn man etwas mit Open Source Projekten arbeiten möchte, ist es naiv wenn man CMake einfach ignoriert. CMake ist bei weitem nicht perfekt und oft mühsam, aber es ist momentan das Beste das du kriegst und am weitesten Verbreitet. Wenn du also eine Cross-Platform Applikation schreibst, ist CMake ein guter Weg.
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

Werbeanzeige