在家工作的条件编译
时间: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:"来引用测试所在的位置。
当然,如果我们需要做一些更剧烈的事情,设置环境变量可能是最好的方法。