Visual Studio (c++)-关于目录配置的最佳实践是什么?
Visual Studio (C++)- what is the best practice regarding directories configurations?
(我使用的是VS 2010,但大多数信息至少与VS 2003相关,可能在构建配置菜单GUI的组织/布局上略有不同)
在配置项目构建时,有一个名为的"vc++目录"的部分包含6个标签。其中2个是:
- 图书馆目录
- 包括目录
另外,如果你去'C/c++ ' -> 'Additional Include Directories',你可以指定额外的目录,AFAIK(从MSDN和VS帮助中对这些目录的描述)与'Include Directories'相同(尽管它们之间可能有一些搜索顺序)。同样地,如果你去'Linker' -> 'Additional Library Directories'你可以指定额外的库链接到项目的路径(这里的描述更精确-"允许用户覆盖环境库路径",所以这些路径被更快地搜索)。
我的问题是-
是否有理由使用其中一个(路径)而不是另一个?什么是最佳实践?
请将您的答案与使用属性页功能联系起来(这增加了不同项目配置的灵活性,并允许轻松重用现有的功能,但这使我对这里的最佳实践更加困惑)。
让我们先考虑只包含路径。
Microsoft文档指出编译器按照以下顺序搜索目录:
-
包含源文件的目录
-
用
/I
选项指定的目录,按CL遇到它们的顺序排列。 -
INCLUDE
环境变量指定的目录。
现在,vc++目录"包含目录"对应于INCLUDE
变量。也就是说,这些目录是最后搜索的。根据文档
和["C/c++ "→"General"→"附加包含目录"对应于/I
选项。也就是说,首先搜索这些目录。根据文档
如果存在最佳实践,它可能是
-
保留重写include的可能性,和
-
最大限度地减少编译器调用命令行长度(以免对糟糕的Windows造成压力-我记得有一个8 KB的限制,或大约8 KB)。
。,使用vc++目录;→默认包含目录"]
环境变量对应的完整集合:
-
["vc++ Directories"→"可执行目录"→
PATH
-
["vc++ Directories"→"包括directories"]→
INCLUDE
-
["vc++ Directories"→参考目录"]→
LIBPATH
(适用于#using
) -
["vc++ Directories"→"图书馆directories"→
LIB
我是怎么知道的?
只需在GUI中单击并按F1寻求帮助。: -)
RTFM总是一个好主意
默认情况下,Visual Studio在其INCLUDE
变量中放置以下路径( vc++ Directories -> Include Directories ):
- Microsoft Visual c++头文件的路径:
$(VCInstallDir)include
- MFC头文件的路径(用于MFC项目):
$(VCInstallDir)atlmfcinclude
- Windows SDK头文件的路径:
$(WindowsSdkDir)include;$(FrameworkSDKDir)include
它们是预先配置的,只要把它们放在它们所在的地方就可以了。如果你的项目依赖于一些额外的组件/框架,添加路径到他们的头C/c++ -> General -> additional Include Directories (/I
编译器开关)。在本例中,#include
语句使用尖括号。
库也是如此-保留Visual Studio的默认值,并将来自其他组件/框架的库路径添加到Linker ->附加库目录。
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 派生类销毁的最佳实践是什么
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 在reactor中存储eventHandlers的最佳方式是什么
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将一系列整数放入类的最佳方法是什么?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 在 c++ 中解析数据包数据的最佳方法是什么?
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 在向量中查找大于 0(或通常为 k)的最小元素的最佳方法是什么?