У меня есть 2 решения VS. Оба включают в себя один и тот же проект X. Когда я компилирую, я хочу, чтобы оба решения вызывали MYFLAG #ifdef по-разному. Допустим, я хочу, чтобы решение A определило MYFLAG, а решение B не определило его. Если я сделаю это на уровне проекта, как / D MYFLAG, тогда оба решения будут включать этот флаг, я хочу, чтобы только одно из них сделало это.
Рассмотрим следующую структуру каталогов:
тестовый каталог test.sln solution.h тестовый каталог 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
файл в соответствии с вашими требованиями.
Других решений пока нет …