gpt4 book ai didi

c++ - 一个来源有多个对象

转载 作者:太空狗 更新时间:2023-10-29 23:09:42 25 4
gpt4 key购买 nike

一个源有多个对象我正在使用 MSVS 2010,我有一个 C++ 源文件,它必须编译成 2 个目标文件。这些编译之间的差异是其中一个的“#define UNICODE”而不是另一个。我不能(也不想)为此使用模板。

目前,我在我的项目中为此使用了 3 个源文件。实际源被排除在构建之外,而其他 2 个是它的包装器。像这样:

文件 = wrap-UNICODE.cpp

#ifndef UNICODE
#define UNICODE
#endif

#include "actual-source.cpp"
// eof

文件 = wrap-ANSI.cpp

#ifdef UNICODE
#undef UNICODE
#endif

#include "actual-source.cpp"
// eof

当使用 makefile 时,我可以很容易地避免使用包装源,使用不同的输出开关。我的问题是,我想知道是否(以及如何)我可以直接在 MSVS 项目中执行此操作。

最佳答案

如果我正确理解你想做什么,这是可能的。我有 MS Visual Studio 2005 标准版;这是我如何做到这一点(如果你有不同的版本,你可能需要调整它,或者它甚至可能在你的版本中不起作用;我希望你的电脑不会爆炸 :))。

第一步需要手动编辑项目文件。打开项目文件(在我的机器上名为 stuff.vcproj)并复制提到您的文件的行:

<File
RelativePath=".\actual-source.cpp"
>
</File>
<File
RelativePath=".\actual-source.cpp"
>
</File>

然后,将项目加载到 MSVS 中。转到解决方案资源管理器(在我的机器上为 Ctrl+Alt+L);该项目将显示两个具有相同名称的文件。打开每个的属性页(在我的机器上为 Alt+F7)并添加您想要的任何差异(例如预处理器定义)。

您还必须为目标文件设置不同的名称:在同一窗口(属性页)中选择输出文件、目标文件名,并添加不同的名称(例如 actual-source-unicode;MSVS 将编译时添加.obj扩展名)。如果不这样做,两个 obj 文件将具有相同的名称,并且一个将覆盖另一个。

关于c++ - 一个来源有多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4257355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com