c - 如何在 Visual Studio 中包含头文件和源文件文件夹
问题描述
我正在使用 Visual Studio (2017),我需要以下内容。
我有一个文件夹,代码生成器放置从正式模型获得的 .h 和 .c 文件。这个文件夹不是我控制的,例如我不能在里面写,但是它是由另一个团队成员更新的。
通过使用 /I 编译器选项(或项目属性中的附加包含目录),我设法在我的 VS 项目中导入了所有生成的头文件。我要做的是把这个生成的代码集成到一个特定的平台上,这意味着我必须在目标平台上编译生成的代码和集成代码。问题是,编译器无法解析生成代码的生成函数定义,因为它只能看到 .h 文件。我得到的是链接错误(外部符号未解析)
为了解决这个问题,我手动一个一个地添加了现有的 .c 文件。此解决方案带来的明显问题是
- 手工无聊工作
- 生成新文件时,我需要手动导入新文件
问题是:是否可以设置一个选项以指定源文件的路径而无需一一传递?
注意:仅将生成的代码复制并粘贴到 VS 项目文件夹中是不可接受的解决方案。
谢谢
解决方案
如果您查看https://docs.microsoft.com/en-us/cpp/ide/working-with-project-properties?view=vs-2017那么您会看到有一个默认Source Directories
属性,但是(我$(VC_SourcePath)
认为),您可以添加其他路径。文档不清楚这是否意味着将包含此类路径中的所有源文件进行编译。
在文档的底部,它解释了如何通过提供外部属性文件来覆盖某些项目属性。看来您可以使用这样的文件覆盖目标/源。您可以使用一个小工具生成文件,该工具读取这些目录中的文件名并将它们添加到文件中。
您还可以分析该.vcproj
文件并构建一个小工具,该工具将使用您生成的源目录重写该部分,读取这些目录中的文件名并将它们添加到.vcproj
文件中的部分。
推荐阅读
- sorting - unix sort 为不同的用户提供不同的结果
- matlab - 如何在matlab中使用fprintf简短地编写多个变量?
- java - 用正则表达式将字符替换为数字
- javascript - D3.JS 饼图动画 Angular
- python - Kivy 小部件无法更改位置
- c# - 如何在 ASP.NET Core MVC 中的表单输入期间警告用户
- r - R:为什么外部生成的字符串中的“空格”字符具有 ASCII 值“NA”?
- python - 导入多数组 Numpy 扩展模块失败 Visual Studio 2019 Anaconda 1.9.6 Python 3.7.1
- android - 如何从 Firebase 数据中过滤编辑文本?
- android - 带有STREAM_ALARM的Android音频-插入耳机时如何使扬声器静音