Visual Studio 2013解决方案级别标志

时间:2013-12-24 13:20:29

标签: c++ visual-studio-2013 flags ifdefine

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

1 个答案:

答案 0 :(得分:0)

考虑以下目录结构:

test dir
    test.sln
    solution.h
    test dir
        test.vcxproj
test1 dir
    test1.sln
    solution.h

test.slntest1.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文件中。