【问题标题】:Visual Studio 2013 Solution level flagsVisual Studio 2013 解决方案级别标志
【发布时间】:2013-12-24 13:20:29
【问题描述】:

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

【问题讨论】:

  • 不是一个选项。您将不得不使用 /D $(SolutionName)

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


【解决方案1】:

考虑以下目录结构:

测试目录 测试.sln 解决方案.h 测试目录 测试.vcxproj 测试1目录 测试1.sln 解决方案.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 文件中。

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 2015-10-13
    • 2016-05-23
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多