2017-02-08 22 views
13

Potrzebuję wygenerować plik nagłówkowy C++, który opisuje używany kompilator.Czy program Visual Studio może wygenerować plik konfiguracyjny?

Tradycyjnie użyliśmy komendy CUpewnij:

configure(${PROJECT_SOURCE_DIR}/configure.h.in ${PROJECT_BINARY_DIR}/configure.h) 

które zastępuje cały ciąg umieszczonego „@” (na przykład @ cxx_compiler_name @) z wartością tej zmiennej w systemie build cmake.

Otrzymaliśmy wymóg zmierzenia się z CMake, więc jest coś podobnego w Visual Studio. Chciałbym wypełnić plik nagłówkowy niektórymi wartościami w makrach Visual Studio.

+2

Jedną z nich jest dodanie projektu C# w tym samym rozwiązaniu dla tego celu generowania kodu, dodanie configure.h.tt ("Szablon T4", mogą wyprowadzać dowolne rozszerzenia plików, takie jak .h lub .cpp) w tym projektu, bez żadnego innego kodu C# i skonfiguruj rozwiązanie, aby projekt C++ był zależny od C#, więc buduje po nim. Możesz dodać zadanie msbuild do vcxproj, aby skopiować wygenerowany plik do C++ lub zawrzeć go bezpośrednio w projekcie C++. Więcej informacji na temat T4: http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx –

Odpowiedz

2

Możesz dodać plik configure.h.in do projektu i ustawić niestandardowy zbudować dla niego, że będzie działał perl lub sed i zastąpić cokolwiek potrzebne. Nie zapomnij dodać configure.h do wyjściowej właściwości plików, aby program Visual Studio mógł określić zależności i "skompilować" configure.h.in przed innymi źródłami, które używają configure.h.

+0

Dzięki Cmake możesz pobrać bezpośrednio z kompilatorów ich nazwy i wersje. sed zadziała, ale będzie to jedno długie polecenie dla wszystkich zastępstw, które mam. Perl również by działał, ale raczej piszę z CMake'em, jeśli mam zamiar wprowadzić inne narzędzie. – KlingonJoe

+0

@KlingonJoe Możesz spróbować użyć MSBuild dla tego http://stackoverflow.com/a/7888659/70930, ale nie jestem pewien, co jest łatwiejsze. – Paul

Powiązane problemy