V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gtshine
V2EX  ›  C

MS Visual Studio 各种配置看的头大

  •  
  •   gtshine · 2016-10-30 18:53:28 +08:00 · 2659 次点击
    这是一个创建于 2937 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  2016-10-30 19:31:59 +08:00
    Visual Studio 2015
    C++ 项目
    12 条回复    2016-10-31 15:07:31 +08:00
    forestyuan
        1
    forestyuan  
       2016-10-30 19:25:36 +08:00
    版本号?项目是什么类型的?
    我用 Visual Studio 2015 ,看了几个项目,都没有这个选项。我记得以前版本的 VS 里面好像有过。
    gtshine
        2
    gtshine  
    OP
       2016-10-30 19:30:33 +08:00
    @forestyuan 我也是 2015 ,就是右键项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录 -> 编辑
    里面有个继承的值
    ZyZyZzz
        3
    ZyZyZzz  
       2016-10-30 20:09:35 +08:00   ❤️ 2
    VS 界面语言切换成英文,然后 google , stackoverflow , MSDN 之
    然后 VS 的用法尽在掌握
    zhuangzhuang1988
        4
    zhuangzhuang1988  
       2016-10-30 21:07:30 +08:00
    就和类继承一样,好多预定义设置
    gtshine
        5
    gtshine  
    OP
       2016-10-30 22:20:00 +08:00
    @zhuangzhuang1988 抱歉,还是不太理解,要怎么做呢?
    forestyuan
        6
    forestyuan  
       2016-10-30 23:36:16 +08:00
    官方说法是从 parent 或 project defaults 继承
    其实很多时候,直接填目录进去就行了
    alqaz
        7
    alqaz  
       2016-10-31 00:09:21 +08:00
    你试着设置不同值,然后看下 属性=>c/c++=>命令行 右边的值有什么不同。
    acros
        8
    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
        9
    acros  
       2016-10-31 00:26:14 +08:00
    估计楼主现在开的项目是单 Project 的,没看出区别来····
    exch4nge
        10
    exch4nge  
       2016-10-31 09:40:42 +08:00   ❤️ 1
    对 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
        11
    exch4nge  
       2016-10-31 09:47:10 +08:00
    忘了说重点了。 Property Manager 里面看到的 props 文件是有顺序的,下面一个会成为当前的配置的父级,当然如果当前配置里没有改动过,默认就会继承父级配置的值。
    gtshine
        12
    gtshine  
    OP
       2016-10-31 15:07:31 +08:00
    @exch4nge 很详细!在 Property Manager 可以添加父项目的属性文件,这样就可以继承了。很感谢。
    另外,,,看来还是要回英文版。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5456 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 03:42 · PVG 11:42 · LAX 19:42 · JFK 22:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.