如何在Visual Studio中包含头文件和源文件文件夹

6
我正在使用Visual Studio(2017),需要以下内容。
我有一个文件夹,代码生成器会在其中放置从正式模型获得的.h和.c文件。这个文件夹不受我控制,例如,我不能在其中编写,但它由另一位团队成员更新。
通过使用/I编译器选项(或项目属性中的其他包含目录),我成功将所有生成的头文件导入到我的VS项目中。我需要做的是将此生成的代码集成到特定平台中,这意味着我必须在目标平台上同时编译生成的代码和集成代码。问题是,编译器无法解析生成代码的生成函数定义,因为它只看到了.h文件。我遇到了连接错误(外部符号未解析)。
为了解决这个问题,我手动逐个添加现有的.c文件。这种解决方案带来的明显问题包括:
  • 手动繁琐的工作
  • 当生成新文件时,我需要手动导入新文件
问题是:是否有一种选项可以设置路径以指定源文件而不是逐个传递它们?
注意:仅将生成的代码复制并粘贴到VS项目文件夹中不是可接受的解决方案。
谢谢

你是在生成Visual Studio还是使用类似CMake的工具? - Matthieu Brucher
不是。这些文件是使用完全不同的工具生成的,该工具允许绘制所需执行操作的行为模型,然后自动生成包含功能代码的 .c 和 .h 文件。 - Dario D'Avino
1个回答

5
如果您查看https://learn.microsoft.com/en-us/cpp/ide/working-with-project-properties?view=vs-2017,您会发现有一个名为 Source Directories 的属性,默认情况下为 $(VC_SourcePath),但(我认为)您可以添加其他路径。文档不清楚是否意味着这样的路径中的所有源文件都将包括在编译中。
在文档底部,它解释了如何通过提供外部属性文件来覆盖某些项目属性。似乎您可以使用此类文件覆盖目标/源。您可以使用一个小工具生成文件,该工具读取那些目录中的文件名并将它们添加到文件中。
您还可以分析.vcproj文件并构建一个小工具,该工具将重新编写带有您生成的源目录的部分,读取那些目录中的文件名并将它们添加到.vcproj文件的相应部分中。

1
谢谢。我发现后面的建议非常有帮助。实际上,我将这一行添加到了 .vcxproj 文件中:<ClCompile Include="<path-to-generated-code>*.c" /> 然后重新加载解决方案,我在项目资源管理器中找到了生成的文件。尽管如此,我仍将深入研究 Visual Studio 文档,以更好地理解如何使用用户 .props 和 .target 文件。这样,我就可以建立一个简单的流程来帮助其他团队成员,以避免手动编辑 .vcxproj 文件。 - Dario D'Avino
当然,我已经做了。但是我没有足够的声望来公开显示我的分数。 - Dario D'Avino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接