在构建C ++库时,我目前将所有头文件从“源”目录复制到一个单独的“包含”目录中。之后,“ include”目录对库用户公开。
为了自动执行复制,我在MSVC项目中添加了一个构建后事件:
xcopy $(ProjectDir)src\*.h $(SolutionDir)include\$(ProjectName)\ /d /i /y /s
它可以按预期工作。
但是,不时检查标题并编辑原始库时,我倾向于混淆-哪个文件是副本,哪个是原始文件?我发现,如果仅将“ include”目录中的文件硬链接到“ source”中的原始文件,就会简单得多。
但是我不能用xcopy
来做。似乎正确的做法是为我找到的每个单个头文件调用mklink
。但是,这可能不应该作为构建后事件来完成,这是构建后的一个动作。相反,作为构建的一部分,对于项目中的每个.h
文件。
这使我了解了所谓的“构建定制”。这将我定向到此文档:
https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2019
我的头爆炸了。它没有解释我应该在那些.targets和.props文件中放入什么。而且所解释的内容令人困惑(为什么我需要这些?)。
我尝试检查内置的自定义规则,例如:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations
但是这些文件很大,也没有帮助。他们似乎指定了用户可用的所有菜单。我想要的只是每个文件要执行的单个命令...