0

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

4

1 回答 1

0

考虑以下目录结构:

测试目录
    测试.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根据您的要求将依赖于解决方案的定义归档。

于 2013-12-24T14:02:31.017 回答