visual studio 2010,如何从父项目继承预处理器定义?

In visual studio 2010, how to inherit preprocessor definitions from parent project?

我有一个项目“First” first.cpp

#include<iostream>
#include "second.h"

using namespace std;

int main()
{
#ifdef MY_MACRO1
    cout << "MY_MACRO1 in first" << endl;
#endif
    second();
    return 0;
}

和静态库“Second” second.cpp

#include <iostream>
#include "second.h"

using namespace std;

int second()
{
#ifdef MY_MACRO1
    cout << "MY_MACRO1 in second" << endl;
#endif
    return 0;
}

和second.h

#ifndef THIRD
#define THIRD
int second();
#endif

在First.vcxproj中,我定义了

<PreprocessorDefinitions>WIN32;MY_MACRO1;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

在 Second.vcxproj 的属性中,在预处理器定义部分,我勾选了“从父项目或默认继承”。 (在只读部分,我可以看到定义没有被继承。同样可以从第二个项目的属性中的“命令行”部分得出结论。)

现在,当我编译并执行第一个项目时,我希望这段代码的输出如下:

MY_MACRO1 in first
MY_MACRO1 in second

但我得到的是:

MY_MACRO1 in first

为什么第二个 project/static 库没有继承宏?我在这里错过了什么?

PS: 我在谷歌搜索了 2-3 天后问了这个问题。

创建一个独立的 属性 sheet 然后让所有相关项目继承它。

在视图 -> 其他 windows -> 属性 管理器下右键单击其中一个项目,然后 select “添加新的 属性 sheet ",编辑 sheet 的属性,然后将其添加到需要继承相关属性的其他项目中。

您不想继承 vcxproj 文件,因为这些文件包含实际文件引用,而不仅仅是应用于构建配置的属性。

按照@SoronelHaetir 的建议,我将宏添加到 .props 文件并在两个项目中导入了该 .props 文件,这解决了我最初的问题。

正如我在评论中提到的,有第三个项目导入了 'Second' 库,我不想在编译 'Third' 时用宏编译 Second。为此,我在 'Second' 和 'Third' 中添加了一个名为 NewConfig 的新配置(Build->Configuration Manager),其中未定义宏。在编译 'Third' 时,我使用了这个 NewConfig,在编译 'First' 时,我使用了定义宏的那个。