2013-10-03 101 views
0

我有一个C++ visual studio项目(比如说p1),其中在一个头文件(比如说h1.h)中我有 #define a 5 这个项目也有很多其他的。 cpp文件其中有许多包括h1.hC++使用相同的文件为不同的项目

现在我想有一个不同的独立的项目(比如P2),其中唯一的变化是在h1.h是 的#define 6

我想在p2中重新使用p1中的所有文件。问题是什么是一种方式,我可以有一个设计,这样我有两个这样的项目在同一个解决方案中没有重复太多的文件。

+0

一旦你已经定义了2个项目P1和P2的解决方案,将P1文件(除h1.h)从资源管理器拖放到P2应该做的诀窍?还是我误解你的问题? – lolando

+0

(附加到以前的评论),然后调整每个项目的“包含路径”指向一个特定的'h1.h' – lolando

+0

我有两个项目具有相同的文件,我已经建立。问题不是自己创建项目。现在在P2的h1.h我想要一个不同的“#define”的“A” – user1612986

回答

0

将所有常用文件放在common_dir\*.cpp文件夹中,将头文件放在p1_dir\h1.hp2_dir\h1.h

+0

可以这样工作吗?在.cpp文件中选择“h1.h”,我将不得不将其更改为p1_dir \ h1.h或p2_dir \ h1.h? – user1612986

+0

通常您的项目将搜索* .h文件给出一个众所周知的搜索路径。它首先查找包含* .cpp文件的目录,然后查看其他包含目录的列表。你可以在你的项目设置中指定额外的include目录,或者使用'-I'选项指定gcc,即'gcc -Ip1_dir ...',然后使用'#include“h1.h”' –

1

你可以使用一个文件夹结构,像这样为您的项目:

MySolution\ 
    Common\ 
    Proj1\ 
    Proj2\ 

如果你(或IDE)不喜欢“通用”的文件夹,你还可以保存在公共文件中“MySolution”的文件夹,并有包括像语句:。

#include "../h1.h" 
在你的项目,您还可以包括从一个共同的文件夹中的多个项目共享代码文件的共同文件

当他们都在同一层次中, IDE似乎是满足的,但它可能会抱怨(但仍然有效)如果他们在完全不同的层次。

+0

你会看到h1.h文件对于P1和P2来说,除了#define完全一样。这可能会使两个项目的h1.h不同。所以让我们称之为h2.h.现在在project1的cpp文件中我需要包含h1.h.和project2相同的cpp文件需要h2.h. – user1612986

+0

无法使用#ifdef MYSYMBOL/#else/#endif构造来分隔每个项目不同的小部分?然后在一个项目中定义符号,但不在另一个项目中。这仍然可以让你分享头文件。 –

+0

我不建议在'#include'指令中使用有趣的相对路径。使用'-I'选项gcc或编译器的项目设置来查找头文件。如果使用硬编码的相对路径,则无法重新组织源代码目录的结构。 –

0

我最终所做的是将#define作为预处理器指令放在项目设置中(只是将其移出代码头文件),并解决了我的问题。

相关问题