2010-03-13 3 views
10

gcc 4.4.2/Visual Studio C++ 2008cmake und visual studio

Ich habe cmake unter Linux verwendet, ohne Probleme.

Jetzt habe ich durch Anwendung auf Windows portiert.

I erzeugen die Lösungsdateien cmake -G „Visual Studio 9 2008 ../src“

jedoch mit, ich weiß, dass Cmake schafft nur ein Makefile, die vom Compiler verwendet, um Ihre Anwendung zu erstellen.

Ich öffne meine Lösung in Visual Studio, ich drücke die F7-Taste zum Kompilieren.

Ich wundere mich, verwendet es tatsächlich das Makefile, das von CMake generiert wurde? Oder es kompiliert die Anwendung wie jedes normale Visual Studio-Programm?

Vielen Dank für jede Beratung,

Antwort

18

Cmake generiert eine Visual Studio-Projektmappe.

Die Lösung enthält mindestens drei Projekte:

  • ALL_BUILD
  • IhrProjekt
  • ZERO_CHECK

Die Lösung wird so eingestellt, dass, wenn Sie Ihr Projekt (von Build-Lösung bauen, oder Build-Projekt) "YourProject" wird erstellt und dann wird ZERO_CHECK erstellt, wodurch CMake ausgeführt wird und überprüft wird, ob sich etwas geändert hat. Wenn sich etwas geändert hat, werden die Projektmappe und die Projektdatei neu generiert und Visual Studio fragt, ob Sie das Projekt neu laden möchten.

Die Kompilierung Ihres Programms wird von Visual Studio durchgeführt, wie wenn Sie es manuell einrichten würden, aber Visual Studio wird cmake ausführen und überprüfen, ob sich etwas geändert hat, und die Projektdateien sollten neu generiert werden.

+0

Dies ist grundsätzlich korrekt, aber das ZERO_CHECK-Projekt wird vor jedem anderen Visual Studio-Projekt erstellt.Jedes Projekt, das CMake generiert, hat eine direkte Build-Abhängigkeit von ZERO_CHECK, mit Ausnahme von CMakes INSTALL-Projekt, das nur von ALL_BUILD abhängig ist hat eine Abhängigkeit zu ZERO_CHECK ...) – Manuzor

10

CMake erzeugt „echte“ VCPROJ Dateien, so dass Visual Studio wird Ihr Projekt wie ein normales Visual Studio Projekt. Es sind keine Makefiles beteiligt.

+0

Der Teil, um den ich mich interessiere, ist die CMakeList.txt. Tut der Compiler etwas damit? Der Grund, den ich gefragt habe, war, als ich meine CMakelists.txt editierte, bekam ich einen Verbindungsfehler, weil ich einen Bibliotheksnamen "ws2_32. Dh TARGET_LINK_LIBRARIES (CLT-Klient ws2_32) nicht hinzufügte. So wie benutzt der Compiler die CMakeLists.txt? Danke. – ant2009

+3

CMake erstellt * .vcproj-Dateien basierend auf den Informationen in der CMakeLists.txt-Datei.Der Befehl TARGET_LINK_LIBRARIES teilt CMake mit, die erforderlichen Anweisungen in die * .vcproj-Dateien einzufügen, damit der Visual Studio-Compiler mit den richtigen Bibliotheken verknüpft wird. – JesperE