在.vcproj RelativePath中使用“用户宏”

时间:2009-05-22 04:39:16

标签: c++ include visual-c++

内部.vcproj files项目中包含所有源文件的列表。

我们如何使用宏来指定源文件的路径? 如果我们这样做:

<File
   RelativePath="$(Lib3rdParty)\Qt\qtwinmigrate-2.5-commercial\src\qmfcapp.cpp">
</File>

编译器找不到该文件夹​​:

qmfcapp.cpp
c1xx : fatal error C1083: Cannot open source file: '.\$(lib3rdparty)\qt\qtwinmigrate- 2.5-commercial\src\qmfcapp.cpp': No such file or directory

如您所见,我们的项目汇编了QT的几个源文件。 QT位于外部库的文件夹中,我们不希望硬编码从我们的项目到该文件夹​​的路径(我们有一个非常大的解决方案)

4 个答案:

答案 0 :(得分:3)

正常的解决方案是使用您自己的源包含源控件中的第三方包含,库和源,因此您可以跟踪对源的第三方依赖项的更改。

如果是这种情况,您应该能够使用从每个项目到第三方源文件的相对路径。

但是,如果您的解决方案很大,并且项目设置很复杂,那么即使您只是在Windows上构建,也应该查看CMake。通过CMake,您可以使用仅在一个位置指定的常用设置来描述构建环境。可以使用变量和宏来处理更复杂的情况。然后它会根据此描述生成您的visual studio项目或makefile。我们介绍它支持unix端口,现在我也用它来进行windows开发。

VS项目非常笨拙地使用,打开和关闭对话框,设置调试和发布的东西。每个项目都有自己的设置副本,但大多数与所有其他项目相同。

答案 1 :(得分:3)

如果从其他驱动器添加现有文件,您会注意到使用了绝对路径。

至少对于v8.00,宏似乎没有扩展。我尝试过VC,Ant和OS宏形式 - 没有用。

始终存在sysinternals的联结选项,映射的网络路径或.lib,其中宏规范设置到项目/全局源,包含和lib路径中。即使使用lib包,您也应该能够进入源代码。

答案 2 :(得分:1)

尝试将“Lib3rdParty”的环境变量设置为相应的相对路径片段。

答案 3 :(得分:0)

..应该提到的是,使用属性表虽然消除了很多笨拙但