Czy ktoś może wymienić szczegółowe i szczegółowe kroki, aby skonfigurować plik mc.exe (kompilator komunikatów), aby skompilować plik .mc do pliku .rc jako niestandardowy krok kompilatora w VC++ 2010?
Naprawdę zagubiłem się, jak to zrobić.Skonfiguruj kompilator komunikatów (mc.exe) jako niestandardowy krok kompilatora w VC++ 2010?
Odpowiedz
Kliknij projekt prawym przyciskiem myszy, Dodaj nowy element, wybierz Plik tekstowy, nadaj mu nazwę Blah.mc. Wprowadź lub wklej definicje. Kliknij prawym przyciskiem myszy Blah.mc, właściwości niestandardowej etap produkcji: linię
- polecenia = mc $ (InputPath)
- Wyjścia = $ (InputName) .RC
edytować plik .RC, dodaj:
#include "Blah.rc"
Pracowałem dla mnie, powinienem być blisko.
Jeśli chcesz użyć niestandardową regułę budować, można to zrobić
- prawym przyciskiem myszy projekt w Visual Studio -> Niestandardowe utworzyć reguły
kliknij „Nowa reguła Plik” i wypełnić Pola, używam tego pliku reguł dla MC.EXE
<VisualStudioToolFile Name="Message Table Build Rule" Version="8.00"> <Rules> <CustomBuildRule Name="Message Table Build Rule" DisplayName="Message Table Build Rule" CommandLine="[Location]\mc.exe [Unicode] [Verbose] [Inputs]" Outputs="Message Table Build Rule" FileExtensions="*.mc" ExecutionDescription="Message Table Build Rule" > <Properties> <BooleanProperty Name="Verbose" DisplayName="Verbose mode" Description="Foo." Switch="-v" /> <BooleanProperty Name="Unicode" DisplayName="Unicode mode" Description="Bar." Switch="-u" /> <StringProperty Name="Location" DisplayName="Location" Description="Baz." Switch="[value]" DefaultValue="C:\Bin\Psdk\Bin" /> </Properties> </CustomBuildRule> </Rules> </VisualStudioToolFile>
Hans Passant prawie miał rację. Niestety, $ (InputPath) i $ (InputName) nie są zdefiniowane w VS 2010. Zamiast tworzyć plik wiadomość:
- prawym przyciskiem myszy na swojej Project-> Add-> New Item
- Wybierz „Text Plik (.txt), ale nazwij go jako plik ".mc" (np. "Messages.mc")
- Utwórz plik zasobów (powiedz: "resources.rc")
- Edytuj plik zasobów, tak aby zawierał tylko jedna linia:
#include "messages.rc"
Ten plik zostanie wygenerowany przez kompilator wiadomości. Teraz dodaj niestandardowy krok kompilacji, aby uruchomić kompilator komunikatów:
- Kliknij prawym przyciskiem myszy na messages.mc i wybierz Właściwości.
- W oknie dialogowym Właściwości ustaw opcję Konfiguracja na "Wszystkie konfiguracje".
- W "Właściwości konfiguracji" kliknij "Ogólne".
- Upewnij się, że właściwość "Wykluczono z kompilacji" jest ustawiona na "Nie".
- Ustaw właściwość "Typ artykułu" na "Niestandardowe narzędzie do tworzenia" z rozwijanego menu i kliknij przycisk "Zastosuj", aby wyświetlić właściwość "Niestandardowe narzędzie do budowania".
- Kliknij "Ogólne" w polu "Własne narzędzie budowy".
Ustaw właściwość "Command Line" do:
mc %(FullPath)
Ustaw właściwość Opis coś jak "tworzonych wiadomości ..."
- właściwość ustawiania wyjść do:
%(Filename).rc;%(Filename).h;MSG0409.bin
The file MSG00409.bin is from having the following line in messages.mc:
LanguageNames = (English=0x409:MSG00409)
Może istnieć plik bin dla każdego języka dodawanego do messages.mc. Miłą częścią umieszczania ich w wynikach jest to, że zostaną one usunięte po oczyszczeniu projektu.
Jedyną rzeczą, której nie jestem pewien, jest ustawienie właściwości "Execute Before", aby zagwarantować, że messages.rc zostanie wygenerowany przed skompilowaniem resource.rc. Nie musiałem go ustawiać, ale jeśli kompilator zasobów próbuje znaleźć się przed kompilatorem wiadomości, musisz ustawić tę właściwość. Jest wyłączony dla pliku "messages.mc", ale można go ustawić we właściwości "Niestandardowy krok budowania" projektu.
Jeśli twój projekt ma już plik .rc, możesz po prostu dodać "1 11" MSG00409.bin "" do niego –
jaki jest pożytek z pliku .bin, który powinien być w jakiś sposób uwzględniony? –
jeśli masz spacje w FullPath, użyj mc "% (FullPath)" –
W przypadku, gdy custom compiler
nie jest wymogiem, ale bardziej jak sprawić, by budował pliki .rc z MSBuild. WDK MessageCompiler task oferuje tę integrację z MSBuild
<ItemGroup>
<MessageCompile Include="a.mc">
<GenerateBaselineResource>true</GenerateBaselineResource>
<BaselineResourcePath>c:\test\</BaselineResourcePath>
</MessageCompile>
</ItemGroup>
- 1. Czy jest to błąd kompilatora VC++ 2010?
- 2. Błąd kompilatora wewnętrznego VC++
- 3. Czy to Microsoft VC++ 2010 kompilator bug "nowe auto (enum_type)"
- 4. Dlaczego ten kod powoduje awarię kompilatora VC++?
- 5. Visual Studio 2012: Konfiguracja kompilatora (możliwe użycie Kompilatora z SDK, np. VC++ 2008-Compiler VC++ 2010-Compiler)
- 6. Użycie bibliotek uruchomieniowych VC++ 2010 w projekcie VC++ 2008
- 7. Niestandardowy kompilator z mavenem
- 8. Skonfiguruj ścieżkę kompilatora C w aplikacji RStudio
- 9. Dodaj niestandardowy krok kompilacji w CMake
- 10. Krok po kroku, jak dodać niestandardowy krok kompilacji dla każdego pliku danego typu w Visual Studio 2010?
- 11. VC++ 2010: Weird Critical Section error
- 12. Przełącznik kompilatora do włączania/wyłączania komunikatów debugowania?
- 13. Co to jest dobry kompilator kompilatora kompilatora C#/analizatora składni?
- 14. Formatowanie komunikatów dziennika jako drzewa
- 15. MinGW jako niezawodny 64-bitowy kompilator GCC
- 16. Dlaczego kompilator generuje parę instrukcji push/pop?
- 17. Visual Studio 2010 C++ kompilator problem
- 18. Skonfiguruj Nginx jako równoważnik obciążeń TCP
- 19. Skonfiguruj Tomcat jako usługę (no catalina.bat)
- 20. Zmień domyślny kompilator w Emacs?
- 21. Użyj Node.js jako samodzielnego kompilatora LESS w projekcie?
- 22. 64-bitowa kompilacja na microsoft visual C++ express 2010
- 23. Konfigurowanie SwashBuckle z DelegatingHandler jako dyspozytorem komunikatów
- 24. Błędy VC++ LNK z GLFW
- 25. Czy kompilator C# jest mądrzejszy od kompilatora VB.NET?
- 26. Kompilator niestandardowego katalogu wykonawczego kompilatora Maven2 i katalogu docelowego
- 27. getopt() w VC++
- 28. Jak wyłączyć Unicode w projekcie VC++?
- 29. Kompilator C ??) zastępstwo
- 30. GCC 4.7/4.8 jako kompilator C/C++ Xcode
Prgress, ale miałeś na myśli: linia poleceń = mc $ (InputName) .mc Wyjścia = $ (InputName) .RC; $ (InputName) .h Bez względu na to, powoduje to błąd: mc: error: 0x2 próbuje otworzyć plik <.mc>. – EMS
OK, zaczynam myśleć, że jest większy problem. Tworzę plik TextFile.txt, a następnie skonfigurowano: Wiersz poleceń = echo "InputDir =" $ (InputDir) "InputName =" $ (InputName)> TextOut.txt Wyjścia = TextOut.txt TextOut.txt nie zawiera Rozszerzenia makro ($ xxx). Nie wygląda dobrze. – EMS
Nie jesteś pewien, co robisz. Upewnij się, że rozszerzenie nazwy pliku to .mc, a nie .txt –