Erstellen eines C++-Makefile-Projekts
Eine Makefile ist eine Textdatei, die Anweisungen zum Kompilieren und Verknüpfen (oder Erstellen) einer Reihe von Quellcodedateien enthält. Ein Programm (häufig als Make-Programm bezeichnet) liest die Makefile und ruft einen Compiler, Linker und möglicherweise andere Programme auf, um eine ausführbare Datei zu erstellen. Das Microsoft-Programm heißt NMAKE.
Wenn Sie über ein vorhandenes Makefile-Projekt verfügen, haben Sie die folgenden Optionen, wenn Sie die Visual Studio-IDE bearbeiten, erstellen und debuggen möchten:
- Erstellen eines Makefile-Projekts in Visual Studio, das Ihr vorhandenes Makefile verwendet, um eine VCXPROJ-Datei zu konfigurieren, die von Visual Studio für IntelliSense verwendet wird. (Sie verfügen nicht über alle IDE-Features, die Sie mit einem systemeigenen MSBuild-Projekt erhalten.) Siehe "So erstellen Sie ein Makefile-Projekt unten".
- Verwenden des Assistenten für das Erstellen von Projekten aus vorhandenen Codedateien, um ein natives MSBuild-Projekt aus dem Quellcode zu erstellen. Die ursprüngliche Makefile wird nicht mehr verwendet. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen eines C++-Projekts aus vorhandenem Code.
- Visual Studio 2017 und höher: Verwenden Sie das Feature "Ordner öffnen", um ein Makefile-Projekt ohne Beteiligung des MSBuild-Systems zu bearbeiten und zu erstellen. Weitere Informationen finden Sie unter Open Folder projects for C++ (Verwenden von „Ordner öffnen“ mit Projekten in Visual C++).
- Visual Studio 2019 und höher: Erstellen eines UNIX-Makefile-Projekts für Linux.
So erstellen Sie ein Makefile-Projekt mit der Makefile-Projektvorlage
In Visual Studio 2017 oder höher ist die Makefile-Projektvorlage verfügbar, wenn die Workload C++-Desktopentwicklung installiert ist.
Folgen Sie dem Assistenten, der Sie beim Festlegen der Befehle und der Umgebung unterstützt, die das Makefile verwendet. Anschließend können Sie dieses Projekt verwenden, um Ihren Code in Visual Studio zu erstellen.
Das Makefile-Projekt zeigt im Projektmappen-Explorer standardmäßig keine Dateien an. Die Buildeinstellungen, die auf der Eigenschaftenseite des Projekts angezeigt werden, werden vom Makefile-Projekt festgelegt.
Die im Projekt angegebene Ausgabedatei hat keine Auswirkungen auf den Namen, den das Buildskript generiert. Er deklariert nur eine Absicht. Ihr Makefile steuert weiterhin den Buildprozess und gibt die Buildziele an.
So erstellen Sie ein Makefile-Projekt in Visual Studio
Wählen Sie im Visual Studio-Hauptmenü Datei>Neu>Projekt aus, und geben Sie im Suchfeld „makefile“ ein. Wenn mehrere Projektvorlagen angezeigt werden, wählen Sie je nach Zielplattform aus den Optionen aus.
Nur Windows: Geben Sie auf der Seite "Makefile-Projekt Debugkonfigurationseinstellungen " den Befehl, die Ausgabe, die Bereinigung und die Neuerstellung von Informationen für Debug- und Einzelhandelsbuilds an. Wählen Sie "Weiter" aus, wenn Sie unterschiedliche Einstellungen für eine Release-Konfiguration angeben möchten.
Wählen Sie "Fertig stellen" aus, um das Dialogfeld zu schließen und das neu erstellte Projekt in Projektmappen-Explorer zu öffnen.
So erstellen Sie ein Makefile-Projekt in Visual Studio 2015 oder Visual Studio 2017
Geben Sie auf der Visual Studio-Startseite „makefile“ in das Suchfeld Neues Projekt ein. Sie können auch Visual C++>Allgemein (Visual Studio 2015) oder Andere (Visual Studio 2017) im Dialogfeld Neues Projekt erweitern und dann im Vorlagenbereich auf Makefile-Projekt klicken, um den Projekt-Assistenten zu öffnen.
Geben Sie auf der Seite Anwendungseinstellungen die Befehls-, Ausgabe-, Bereinigungs- und Neuerstellungsinformationen für die Debug- und Verkaufsversion an.
Wählen Sie "Fertig stellen" aus, um den Assistenten zu schließen und das neu erstellte Projekt in Projektmappen-Explorer zu öffnen.
Sie können die Projekteigenschaften auf der Eigenschaftenseite des Projekts anzeigen und bearbeiten. Weitere Informationen zum Anzeigen der Eigenschaftenseite finden Sie unter Festlegen von C++-Compiler- und Buildeigenschaften in Visual Studio.
Makefile-Projekt-Assistent
Nachdem Sie ein Makefile-Projekt erstellt haben, können Sie die folgenden Optionen auf der Nmake-Seite der Eigenschaftenseite Ihres Projekts anzeigen und bearbeiten.
Build-Befehlszeile: Gibt die Befehlszeile an, die ausgeführt werden soll, wenn der Benutzer "Build" im Menü "Erstellen" auswählt. Wird im Feld „Buildbefehlszeile“ auf der Seite „Nmake“ der Eigenschaftenseite des Projekts angezeigt.
Ausgabe: Gibt den Namen der Datei an, die die Ausgabe für die Befehlszeile enthält. Diese Option basiert standardmäßig auf dem Projektnamen. Wird im Feld „Ausgabe“ auf der Seite „Nmake“ der Eigenschaftenseite des Projekts angezeigt.
Clean commands: Specifies the command line to run when the user selects Clean from the Build menu. Wird im Befehlszeilenfeld „Bereinigen“ auf der Seite „Nmake“ der Eigenschaftenseite des Projekts angezeigt.
Befehlszeile neu erstellen: Gibt die Befehlszeile an, die ausgeführt werden soll, wenn der Benutzer im Menü "Erstellen" die Option "Neu erstellen" auswählt. Wird im Befehlszeilenfeld „Alles neu erstellen“ auf der Seite „Nmake“ der Eigenschaftenseite des Projekts angezeigt.
Gewusst wie: Aktivieren von IntelliSense für Makefile-Projekte
IntelliSense wird in Makefile-Projekten nicht ordnungsgemäß ausgeführt, wenn bestimmte Projekteinstellungen oder Compileroptionen nicht ordnungsgemäß eingerichtet sind. Führen Sie die folgenden Schritte aus, um Makefileprojekte so zu konfigurieren, dass IntelliSense erwartungsgemäß arbeitet:
Öffnen Sie das Dialogfeld Eigenschaftenseiten. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).
Wählen Sie die Eigenschaftenseite für Konfigurationseigenschaften>NMake aus.
Ändern Sie die Eigenschaften unter IntelliSense entsprechend:
Legen Sie die Eigenschaft Präprozessordefinitionen so fest, dass alle Präprozessorsymbole in Ihrem Makefile-Projekt definiert werden. Weitere Informationen finden Sie unter
/D
(Präprozessordefinitionen).Legen Sie die Eigenschaft Includesuchpfad so fest, dass die Liste von Verzeichnissen angegeben wird, in denen der Compiler sucht, um Dateiverweise aufzulösen, die an Präprozessordirektiven in Ihrem Makefile-Projekt übergeben werden. Weitere Informationen finden Sie unter
/I
(Zusätzliche Includeverzeichnisse).Legen Sie die Umgebungsvariable INCLUDE für Projekte fest, die mithilfe der „cl.exe“ über ein Befehlsfenster erstellt werden, um Verzeichnisse anzugeben, in denen der Compiler sucht, um Dateiverweise aufzulösen, die an Präprozessordirektiven in Ihrem Makefile-Projekt übergeben werden.
Legen Sie die Eigenschaft Erzwungene Includedateien fest, um anzugeben, welche Headerdateien bei der Erstellung des Makefile-Projekts verarbeitet werden sollen. Weitere Informationen finden Sie unter
/FI
(Name Forced Include File).Legen Sie die Eigenschaft Assemblysuchpfad fest, um die Liste von Verzeichnissen anzugeben, in denen der Compiler sucht, um Verweise auf .NET-Assemblys in Ihrem Projekt aufzulösen. Weitere Informationen finden Sie unter
/AI
(Angeben von Metadatenverzeichnissen).Legen Sie die Eigenschaft Erzwungene Verwendung von Assemblys fest, um anzugeben, welche .NET-Assemblys bei der Erstellung des Makefile-Projekts verarbeitet werden sollen. Weitere Informationen finden Sie unter
/FU
(Name Forced #using File).Legen Sie die Eigenschaft "Zusätzliche Optionen " fest, um andere Compileroptionen anzugeben, die von IntelliSense beim Analysieren von C++-Dateien verwendet werden sollen.
Klicken Sie auf OK, um die Eigenschaftenseiten zu schließen.
Verwenden Sie den Befehl Alle speichern, um die geänderten Projekteinstellungen zu speichern.
Führen Sie das nächste Mal, wenn Sie Ihr Makefile-Projekt in der Visual Studio-Entwicklungsumgebung öffnen, den Befehl Projektmappe bereinigen und anschließend Projektmappe erstellen im Makefile-Projekt aus. IntelliSense sollte nun ordnungsgemäß in der IDE funktionieren.
Siehe auch
Verwenden von IntelliSense
NMAKE Reference (NMAKE-Referenz)
Vorgehensweise: Erstellen eines C++-Projekts aus vorhandenem Code
Sonderzeichen in einer Makefile
Makefile-Inhalte und -Features