У меня есть 2 решения VS. Оба включают один и тот же проект X. Когда я компилирую, я хочу, чтобы оба решения запускали MYFLAG #ifdef по-другому. Итак, допустим, я хочу, чтобы решение A определило MYFLAG и решение B не определило его. Если я сделаю это на уровне проекта, например/D MYFLAG, то оба решения будут включать этот флаг. Я хочу, чтобы только один из них сделал это.Visual Studio 2013 флаги уровня решения
0
A
ответ
0
Рассмотрим следующую структуру каталогов:
test dir test.sln solution.h test dir test.vcxproj test1 dir test1.sln solution.h
Оба test.sln
и test1.sln
ссылка test.vcxproj
.
Файл test\solution.h
:
#pragma once
#define SOLUTION_NAME "test"
Файл test1\solution.h
:
#pragma once
#define SOLUTION_NAME "test1"
В свойствах проекта, дополнительные включают каталоги, добавить: $(SolutionDir)
. Наконец, код проекта:
#include "stdafx.h"
#include <iostream>
#include "solution.h"
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << SOLUTION_NAME << std::endl;
return 0;
}
Построить и запустить test.sln, он печатает: test
. Создайте и запустите test1.sln, он печатает: test1
. Поместите определения, зависящие от решения, в файл solution.h
в соответствии с вашими требованиями.
Не вариант. Вам придется обойтись с/D $ (SolutionName) –