Как заставить Visual Studio игнорировать некоторые строки кода при компиляции для одной конфигурации, но не игнорировать, когда в других конфигурациях - PullRequest
0 голосов
/ 15 мая 2019

У меня есть проект Visual Studio на C ++, где мне нужно собрать две разные конфигурации / платформы. Каждая конфигурация сборки (скажем, A и B) использует свою библиотеку. В моем проекте есть один файл cpp, в котором используется одна конкретная функция (1 строка кода), которая доступна только в конфигурации A, но не в конфигурации B. Это приводит к ошибке компиляции при компиляции конфигурации B.

Я проверил использование #ifdef, но это потребует некоторых изменений, когда переключается конфигурация сборки.

Может кто-нибудь посоветовать элегантный способ включить конфигурацию B, чтобы игнорировать только эту строку, пока конфигурация A компилирует это как обычно? Спасибо!

1 Ответ

2 голосов
/ 15 мая 2019

В свойствах проекта в C ++ / Preprocessor введите некоторые настройки #defines, скажем, AY и BEE.Убедитесь, что вы добавили их как для вариантов Debug, так и для Release.

Затем используйте #ifdef...#endif в источнике для конкретных строк конфигурации.

Пример:

#ifdef BEE
    int a = 0;
#else
    int a = 1;
#endif

АльтернативаПодход включает в себя введение нескольких исходных файлов, специфичных для конфигурации, и исключение некоторых из них из сборки в одной конфигурации, но не в другой.

В других средах того же самого можно добиться, предоставив дополнительные #defines черезкомандная строка компилятора - -D MYSYMBOL для GCC.MSVC тоже это поддерживает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...