我有2个VS解决方案。两者都包含相同的项目X.当我编译时,我希望两种解决方案以不同的方式触发#ifdef MYFLAG。因此,假设我希望解决方案A定义MYFLAG,解决方案B不要定义它。如果我在/ D MYFLAG这样的项目级别进行,那么两个解决方案都将包含此标志,我只希望其中一个这样做。
答案 0 :(得分: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
文件中。