C++ VisualStudio中的复杂构建
我有一些东西在Visual Studio中找不到好的执行方式:C++ VisualStudio中的复杂构建,c++,c,windows,visual-studio,build,C++,C,Windows,Visual Studio,Build,我有一些东西在Visual Studio中找不到好的执行方式: 预构建步骤调用一个代码生成器,该生成器生成一些源文件,这些源文件将在以后进行编译。通过向项目中添加空白文件(稍后将替换为实际生成的文件),可以在一定程度上解决此问题,但如果我不知道自动生成的源文件的名称和/或数量,则无法解决此问题。我可以使用$(生成的通配符/*.c)在gnumake中轻松解决它。如何使用Visual Studio执行类似的操作 如果文件不需要修改(“make”行为),我是否可以阻止预生成/后生成事件运行?当前的解决
$(生成的通配符/*.c)
在gnumake
中轻松解决它。如何使用Visual Studio执行类似的操作“make”
行为),我是否可以阻止预生成/后生成事件运行?当前的解决方法是编写一个包装器脚本,它将为我检查时间戳,这是可行的,但有点笨拙autoconf
定位。我想我可以在项目设置中使用用户定义的宏指定路径,但是在哪里可以放置这些宏以便轻松找到和调整它们呢CMake
,scon
),但它们通常会自己生成VS项目文件,我需要将此项目集成到现有的VS构建系统中,所以我希望只生成普通VS项目文件,而不是生成的文件
这种方法的一个缺点是,以这种方式构造的包含路径不包括在VisualStudio的搜索路径中(除非您在VS的“项目和目录”设置中复制了定义)。我曾在PDC08上与一些微软人员讨论过如何为VS2010修复此问题,以及如何总体上改进界面,但他们没有做出可靠的承诺。我已经解决了这个确切的问题,并使用自定义构建规则使其正常工作 但这总是很痛苦,而且效果很差。我放弃了VisualStudio,使用cygwin开发了一个Makefile系统。现在好多了 cl.exe是VS编译器的名称
更新:我最近改用了cmake,它也有自己的问题,cmake可以生成一个VisualStudio解决方案。这似乎工作得很好。根据您正试图做的事情,有时您可能会幸运地使用自定义构建步骤并正确设置依赖项。将所有生成的代码放入自己的项目中,然后让主项目依赖它,这可能会有所帮助。至于第3点。从VS2005开始引入的
.vsprops
文件是更好的选择。答案3。这是错误的。自VS2005以来,您可以使用.vsprops
文件在项目范围内执行此操作,而无需外部帮助。从那以后,我一直在广泛地使用它们,并且使用了未更改的项目,在“属性表”(.vsprops
)文件中只调整了一些相关参数。我知道这个答案很旧,但VS2005和2008当时已经发布,因此有一个标准的方法来做。@0xC000002L我不同意这是错误的。当然,你可以使用道具。然而,它不是一个全系统的标准。您必须制定自己的惯例,通过一个层次结构的支撑表来描述所有库,并始终如一地加以实施。从概念上讲,它与(3)中建议的环境变量方法没有什么不同,它的缺点是将您锁定在特定的构建系统中。