VS2008 C ++项目编译的外部化参数

时间:2010-01-25 14:29:54

标签: c++ visual-studio externalizing

是否有某种方法可以外化Visual Studio 2008上编译过程中使用的库的路径?比如,* .properties文件?

我的目标是定义引用头文件和库的位置的“变量”,例如* .properties文件用于Java的Ant构建系统。

5 个答案:

答案 0 :(得分:3)

我认为您正在寻找.vsprops个文件。它们与* .properties文件相当。

答案 1 :(得分:2)

环境变量?

属性中允许的所有$(xyz)替换都是,并且您被允许“自带”。

它们通常从父进程继承,因此您可以设置它们

  • 用于系统设置中的机器/用户(通常通过资源管理器继承)
  • 在批处理文件中,在运行devenv.exe之前设置它们
  • SolutionBuildEnvironment 等插件中从项目文件中读取

答案 2 :(得分:1)

如果您指的是影响#includes的位置,项目属性|配置属性| C / C ++ /其他包含目录就是故障单。还有项目属性| Common Properties | Additional reference search paths。

如果您的问题是我如何参与VCProj文件中的内容,就像我在Ant中那样,答案是在VS2010中,VC项目是[/ can?]是基于MSBuild的,而VS2008 vcproj文件是基于XML的专有格式[但正如其他答案所说,它们具有类似的属性能力]。

在没有更多信息的情况下,我非常确定您正在做的标准方法是将搜索路径添加到第一段或第二段。

答案 3 :(得分:1)

我不知道Ant是如何工作的,但是对于静态库和标题,您可以编辑.vcproj文件。实际上这些是XML文件。库位于 VCLinkerTool 工具标记的 AdditionalDependencies

<Tool
    Name="VCLinkerTool"
    AdditionalOptions=" /subsystem:windowsce,5.01"
    AdditionalDependencies="iphlpapi.lib commctrl.lib coredll.lib"
/>

VCCLCompilerTool 工具标记中的 AdditionalIncludeDirectories

中定义了其他标题路径
<Tool
    Name="VCCLCompilerTool"
    Optimization="0"
    AdditionalIncludeDirectories="dev\mydir"
    PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
/>

注意,每个构建配置都有一个这样的部分。 这是你在找什么?

编辑:MSalters建议的.vsprops更强大;您可以在其中定义其他依赖项和库,以使项目继承这些属性。好吧,我今天学到了一些有用的东西!

答案 4 :(得分:0)

您可以使用CMake之类的构建系统。您为CMake提供项目的高级描述,并通过其他工具(例如Visual Studio的IDE或Unix风格的makefile)发出必要的文件以使项目正确构建。

路径:您可以在CMakeList.txt配置文件中使用CMake的INCLUDE_DIRECTORIES()LINK_DIRECTORIES()命令来指定这些路径。 CMake有变量,它描述了你的环境的两个方面(其中许多可以被自动发现,例如CMAKE_C_COMPILER这是运行你的C编译器的命令)以及你希望允许用户使用的任何选项直接指定。所有变量都存储在单独的纯文本配置文件CMakeCache.txt中,可以在文本编辑器中或使用特殊的GUI配置工具进行编辑。

CMake还有许多其他功能,例如能够自动发现许多有用库的位置,以及使用CONFIGURE_FILE()命令从包含CMake指令的“模板”文件生成自定义源/头文件。

<强>优点:

  • 在普通环境中具有高度可移植性(例如,它可以为多个版本的MS Visual C ++生成解决方案文件,以及为Unix(例如Linux)系统生成makefile)。
  • 由多个大型多平台项目(例如KDE)使用
  • 设置简单项目非常简单
  • 我发现依赖性检查系统是坚如磐石的 - 例如如果你改变了编译器选项,它就知道要重建(例如,与make的天真使用不同)

<强>缺点:

  • 丑陋的原始语法
  • 文档质量各不相同(例如,有时很难准确判断哪些属性会影响任何给定对象)
  • 涉及一段时间的投资