在家工作的条件编译

时间:2020-03-06 14:34:48  来源:igfitidea点击:

我使用MS Dev Studio编写C ++,每周工作两天。我使用CVS使两台计算机之间的源保持同步,但是计算机所处的环境之间存在差异。

任何人都可以建议一种方法,根据我是否在自己的家庭包装盒上进行编译,有条件地修改代码中的常量吗?

我所追求的是一种自动定义符号的方法,我们将其自动命名为_ATHOME,这样我就可以做到这一点:

#ifdef _ATHOME
#  define TEST_FILES  "E:\Test"
#  define TEST_SERVER "192.168.0.1"
#else
#  define TEST_FILE   "Z:\Project\Blah\Test"
#  define TEST_SERVER "212.45.68.43"
#endif

注意:当然,这是出于开发和调试目的,我永远不会发布带有这样的硬编码常量的软件。

解决方案

我们可以在properties-> c ++-> preprocessor中设置预处理程序变量
在Visual Studio设置中,我们可以使用$(enviromentvariable)

我通常使用配置文件,然后仅创建指向适当配置的符号链接。

在家用和办公机器上,将环境变量" LOCATION"设置为" 1"(对于家庭)或者" 2"(对于工作)。

然后在预处理器选项中,添加一个预处理器定义/ DLOCATION = $(LOCATION)。这将评估为我们在环境变量中设置的" home"或者" work"字符串。

然后在代码中:

#if LOCATION==1
  // home
#else
  // work
#endif

如果工作和家庭之间的唯一区别是测试文件的位置...(IMHO),则不应使用一堆静态路径和IP污染构建文件。

对于我们显示的示例,我将简单地在工作场所和家庭中映射驱动器。 IE。在工作时,将驱动器T:指向\ 212.45.68.43 \ Project \ Blah \ Test,在工作时将驱动器T:指向\ 192.168.0.1 \ Test。

然后,构建过程将使用路径" T:"来引用测试所在的位置。

当然,如果我们需要做一些更剧烈的事情,设置环境变量可能是最好的方法。