我想通过以下两个步骤来自动构建和运行一个输出DLL的代码生成器:
main.cpp
进行编译(类似于Catch单元测试库的工作方式)。库的安装路径包含main.cpp
,如果用户不必直接引用(嘈杂),我希望这样做。.obj
。最后,将这些.obj
文件链接在一起以形成最终的.dll
。在命令行上,它看起来像(大致):
# this command might link to one set of dependencies
cl gen1.cpp gen2.cpp gen3.cpp %LIBROOT%\main.cpp /link [...] /out:generator.exe
# run the generator and get object files
generator.exe %CONFIG1% /out:config1.out
generator.exe %CONFIG2% /out:config2.out
# link the objects together with a potentially different set of dependencies
link config1.out config2.out [...] /DLL /out:project.dll
如何在MSBuild中自动执行此操作?我必须创建自定义项目类型吗?我可以重用部分(或大多数)现有的C ++目标吗?理想情况下,我只想简单地包含一个自定义目标文件,让用户在属性中指定必要的元数据,然后让构建系统确定其余部分。