Mam bardzo duże aplikacji zbudowane przy użyciu Visual Studio 2008, który jest przeznaczony do uruchamiania w systemie Windows XP. Kod składa się z jednego pliku rozwiązania, który zawiera sześć oddzielnych projektów. Moim zadaniem jest przeniesienie tej aplikacji na Linuksa. Nigdy wcześniej czegoś takiego nie robiłem.Definicja w całym interfejsie Visual Studio?
Odkryłem wczoraj, że moja firma życzy sobie, aby ten kod nadal się kompilował w systemie Windows, gdy skończę. Mój pierwszy pomysł dla osiągnięcia tego celu jest użyć instrukcji preprocesora takie jak:
#define COMPILE_FOR_LINUX
Następnie mogę poinformować kompilator, który plików do uwzględnienia w nagłówkach z klocków preprocesora takie jak:
#ifdef COMPILE_FOR_LINUX
// include required Linux headers here and skip Windows header includes
#else
// include required Windows headers here and skip Linux header includes
#endif
Po w tym odpowiednich plików, mogę ująć cały kod zależny od platformy z bloków takie jak:
#ifdef COMPILE_FOR_LINUX
// compile Linux specific code used here.
#else
// compile Windows specific code used here.
#endif
aby uczynić to tak proste, jak to możliwe dla kogoś do C ompiluj aplikację na preferowaną platformę, chciałbym mieć podaną wartość COMPILE_FOR_LINUX tylko w jednym miejscu. Jednak nie jestem pewien, jak to osiągnąć.
Jednym z pomysłów było stworzenie pustego pliku nagłówkowego, a następnie każdy pojedynczy plik w rozwiązaniu zawiera ten plik nagłówkowy, jak określono w ścieżce pliku rozwiązania Visual Studio. W przypadku Linuksa, mam inną wersję pliku nagłówkowego, który definiuje COMPILE_FOR_LINUX, a następnie ma punkt makefile do tej wersji zamiast pustej. Jestem jednak pewien, że jest to bardzo prymitywne rozwiązanie i nie jestem pewien, czy to zadziała.
Czy ktokolwiek mógłby zaproponować bardziej elegancką metodę definiowania czegoś globalnie lub tworzenia zmiennej w taki sposób, aby każdy plik w rozwiązaniu mógł ją zobaczyć?
Na wszelki wypadek, gdy szukają tego inni ludzie: http://stackoverflow.com/questions/5268177/is-there-anyway-to-define-constant-on-a-solution-basis –