Benutzer mit den meisten Antworten
Makefile in VS2008 Projekt konvertieren mit eigenen Einstellungen

Frage
-
Moin,
ich habe hier ein MATLAB Simulink Modell und generiere mir mit dem Real-time Workshop ein VS Projekt (VC). Das Ergebnis sind sind die Quelldateien und auch eine Makefile (mak, mk) für VS. Normalerweise öffne ich die mak-Datei und konvertiere mit dem Visual Studio-Konvertierungs-Assistenten dies in ein VS-Projekt. Jetzt jetzt passen mir die Projekteinstellungen aber nicht: Konkret hätte ich lieber eine DLL anstatt eine EXE-Datei und die Ausgabedatei soll auch nicht auf *.exe enden, sondern auf *.dll. Hat jemand eine Idee?
Visual Studio 2008 Prof. (32-bit)
MATLAB 2010 (RTW 7.5) (32-bit)
Schöne Grüße
Sebastian
Antworten
-
...Ich sollte vielleicht mal #ADD LNK /DLL probieren :)
Ich werd verrückt: das klappt auch noch
# ADD LINK32 /DLL
Mit der o.g. Zeile in der mak-Datei kann die Einstellung in der GUI auf DLL anstatt z.B. EXE umgestellt werden. Die Zeile kann dementsprechend zu der Debug, Release oder was auch immer Konfiguration in der mak-Datei hinzugefügt werden.
Schöne Grüße
Sebastian
- Als Antwort markiert sebastianpsm Freitag, 16. Juli 2010 08:27
Alle Antworten
-
Hallo sebastianpsm!
ich habe hier ein MATLAB Simulink Modell und generiere mir mit dem Real-time Workshop ein VS Projekt (VC). Das Ergebnis sind sind die Quelldateien und auch eine Makefile (mak, mk) für VS. Normalerweise öffne ich die mak-Datei und konvertiere mit dem Visual Studio-Konvertierungs-Assistenten dies in ein VS-Projekt. Jetzt jetzt passen mir die Projekteinstellungen aber nicht: Konkret hätte ich lieber eine DLL anstatt eine EXE-Datei und die Ausgabedatei soll auch nicht auf *.exe enden, sondern auf *.dll. Hat jemand eine Idee?
Visual Studio 2008 Prof. (32-bit)
MATLAB 2010 (RTW 7.5) (32-bit)Kenn mich mit MatLab nicht aus... aber wenn Du ein VS Projekt hast, kannst Du den Typ einfach ändern auf DLL:
Project|Properties|Configuration Properties|Configuration Type: "Application (.exe)" (umstellen nach "Dynamic Library (.dll)")Meistens musst Du dann noch dein Einstiegspunkt von "main /WinMain" nach "DllMain" ändern...
Jochen Kalmbach (MVP VC++) -
Hi Jochen,
im Moment stelle ich nach jedem erzeugen des VS-Projektes den Typ von Hand auf DLL um (und die Ausgabedateiendung), aber diese Einstellung müssten doch ebenfalls irgendwo in der mak-, oder mk-Datei vorhanden sein. Ich möchte anschießend also gar nicht mehr unbedingt VS öffnen, sondern nur mit nmake das Projekt übersetzen.
Sowas wie z.B. die verwendete Laufzeitbibliothek kann man mit dem Compilerparameter /MD (bzw. /MDd) in der mak-Datei einfach einstellen, bei dem Rest finde ich keine passenden Einstellungen :(
Ich vermute, dass mit dem umstellen des Typs VS an dem Projekt eine ganze Reihe von Änderungen vornimmt (z.B. mit dem Compilerflag /DLL arbeiten), aber ich finde keine entsprechende Dokumentation im Netz.
Schöne Grüße
Sebastian
-
Erzeuge doch eine zweite Projekteinstellung. Damit hättest Du eine für "DLL" und eine für "EXE".
=> Build | Configuration Manager | Solution Configuration: New...
Kopiere die Einstellung von einer vorhandenen. Das ganze dann für Debug und Release.Nun kannst Du zwischen den 4 Projekteinstellungen umschalten und jede unabhängig voneinander Einstellen...
Somit kannst Du Release-DLL/EXE und Debug-DLL/EXE machen. Von der Kommandozeile kannst Du das dann viadevenv testproject.sln /Project Win32-DLL /ProjectConfig Debug /Rebuild
compilieren...
Jochen Kalmbach (MVP VC++) -
Hi,
das Problem ist, wenn ich ein neues Projekt aus MATLAB erzeuge, dann muss ich die Einstellungen wieder von Hand in der VS-GUI vornehmen und das ist nicht so praktikabel. Bequemer wäre es, wenn die mak-Datei eben weiß, dass es sich um ein DLL-Projekt handelt und wird dann aus der mak-Datei ein VS-Projekt erzeugt sind die Einstellungen schon richtig.
Schöne Grüße
Sebastian
-
> das Problem ist, wenn ich ein neues Projekt aus MATLAB erzeuge, dann muss ich die Einstellungen wieder von Hand in der VS-GUI vornehmen und das ist nicht so praktikabel. Bequemer wäre es, wenn die mak-Datei eben weiß, dass es sich um ein DLL-Projekt handelt und wird dann aus der mak-Datei ein VS-Projekt erzeugt sind die Einstellungen schon richtig.
Dann solltest Du Dich mal an den MathLab Support wenden...
Jochen Kalmbach (MVP VC++) -
Nee... die von Mathworks sind so quälend langsam und außerdem sagen die immer 'Ja' und machen dann trotzdem das Gegenteil :)
Außerdem brauche ich die Jungs dafür auch gar nicht, dass ist ne VisualStudio-Geschichte und wenn die das mal gut Dokumentieren würde man auch schnell damit zurecht kommen, ach egal:
Also in der erzeugten mak-Datei findest sich in den ersten Zeile sowas hier:
# TARGTYPE "Win32 (x86) Console Application" 0x0103
Wegen dem # würde ich auf Kommentar tippen, könnte aber auch sowas wie ne Magic-Line sein (0x0103).
PS: Das Produkt heißt im übrigen MATLAB, man könnte meinen das MAT kommt von Math, allerdings kommt es von Matrix. Musste eben sein :). Und schon mal danke für die Beteiligung an der Suche nach der Lösung.
Schöne Grüße
Sebastian
-
Zeilen mit # sind Kommentare...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.deHi Martin,
ja was nmake betrifft widerspreche ich dir nicht. Alle Zeilen die mit # beginnen werden nicht verarbeitet. Allerdings, wird aus einer mak-Datei ein VS Projekt erzeugt, dann sind nicht alle #-Zeilen Kommentare. Z.B.
# ADD CPP /MD
bewirkt, dass das Projekt als Einstellung für die Laufzeitbibliothek eben MD verwendet, ersetzt man dies z.B. durch MDd wird auch eben MDd verwendet. Ich sollte vielleicht mal #ADD LNK /DLL probieren :)
Schöne Grüße
Sebastian
- Als Antwort markiert sebastianpsm Freitag, 16. Juli 2010 08:27
- Tag als Antwort aufgehoben sebastianpsm Freitag, 16. Juli 2010 08:27
-
...Ich sollte vielleicht mal #ADD LNK /DLL probieren :)
Ich werd verrückt: das klappt auch noch
# ADD LINK32 /DLL
Mit der o.g. Zeile in der mak-Datei kann die Einstellung in der GUI auf DLL anstatt z.B. EXE umgestellt werden. Die Zeile kann dementsprechend zu der Debug, Release oder was auch immer Konfiguration in der mak-Datei hinzugefügt werden.
Schöne Grüße
Sebastian
- Als Antwort markiert sebastianpsm Freitag, 16. Juli 2010 08:27