MS Visual Studio 各种配置看的头大

2016-10-30 18:53:28 +08:00
 gtshine

大家都是怎么学习 VS 属性页中那些繁杂的配置的,对应的意义是什么。 比如我现遇到个问题,在项目“附加包含目录”中,有个叫“继承的值”,这个东西是怎么来的,我知道是继承父级,可是父级要怎么设置呢?

2692 次点击
所在节点    C
12 条回复
forestyuan
2016-10-30 19:25:36 +08:00
版本号?项目是什么类型的?
我用 Visual Studio 2015 ,看了几个项目,都没有这个选项。我记得以前版本的 VS 里面好像有过。
gtshine
2016-10-30 19:30:33 +08:00
@forestyuan 我也是 2015 ,就是右键项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录 -> 编辑
里面有个继承的值
ZyZyZzz
2016-10-30 20:09:35 +08:00
VS 界面语言切换成英文,然后 google , stackoverflow , MSDN 之
然后 VS 的用法尽在掌握
zhuangzhuang1988
2016-10-30 21:07:30 +08:00
就和类继承一样,好多预定义设置
gtshine
2016-10-30 22:20:00 +08:00
@zhuangzhuang1988 抱歉,还是不太理解,要怎么做呢?
forestyuan
2016-10-30 23:36:16 +08:00
官方说法是从 parent 或 project defaults 继承
其实很多时候,直接填目录进去就行了
alqaz
2016-10-31 00:09:21 +08:00
你试着设置不同值,然后看下 属性=>c/c++=>命令行 右边的值有什么不同。
acros
2016-10-31 00:24:56 +08:00
你说的是项目( Project )继承,是对应解决方案( Solution )里面的依赖关系。
比如你现在有个一个 Solution ( VS 工程都是一个 Solution ),里面有两个项目,一个 A 是变成 exe 的,一个 B 是 dll 被引用的, A 就是继承 B 的。继承关系在 Solution 的 Property -> Common Property -> Project Dependencies 设置。

(我的版本是英文的,中文可能说得不太准。)
acros
2016-10-31 00:26:14 +08:00
估计楼主现在开的项目是单 Project 的,没看出区别来····
exch4nge
2016-10-31 09:40:42 +08:00
对 VS 还算熟,能来答一下。 LS 说的好像不大对的感觉……

继承父级的值的意思是使用其它继承的值,本项目不进行特殊配置。如果你记事本打开 vcxproj 文件,就知道具体区别了。

选择继承父级的值时,对应配置一般不会在 vcxproj 文件中出现, build 时,会自动找到默认配置+props 文件的配置来计算最终使用的属性值。

比如楼主说的附加包含目录属性对应的是 AdditionalIncludeDirectories ,如果选择默认(继承父级的值)的话,在 vcxproj 文件中不会有这个内容。如果 LZ 在里面写成了 C:\Libs 时,会变成

<AdditionalIncludeDirectories>C:\Libs</AdditionalIncludeDirectories>

如果 LZ 又想继承父级的值又想添加这个工程特有的,可以写成

<AdditionalIncludeDirectories>C:\Libs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

用分号分割,%(属性名) 指的就是父级的值;(其实这里会展开成父级的值,类似环境变量设置时用的 set PATH=%PATH%;xxxxx 的原理)

============================分割线===============================

上面有个 props 文件没有说,在这里一起讲。

打开工程的 Property Manager ( View -> Other Windows -> Property Manager ),每个工程可以展开看一下,会发现一般 C++工程有几个默认的 props ,这里就存着上面所说的 VS C++工程的默认 build 用的配置。

如果你需要多个工程应用同一样的 build 配置时,(比如多个工程都需要加某个第三方库的目录)可以自己创建一个 props 文件,具体用法可以找一些教程,这里不多说了。
exch4nge
2016-10-31 09:47:10 +08:00
忘了说重点了。 Property Manager 里面看到的 props 文件是有顺序的,下面一个会成为当前的配置的父级,当然如果当前配置里没有改动过,默认就会继承父级配置的值。
gtshine
2016-10-31 15:07:31 +08:00
@exch4nge 很详细!在 Property Manager 可以添加父项目的属性文件,这样就可以继承了。很感谢。
另外,,,看来还是要回英文版。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/316613

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX