【发布时间】:2014-05-19 20:57:29
【问题描述】:
我正在编译一个项目,该项目依赖于其他几个开源项目(特别是 Zlib 和 LibTIFF),为此提供了 Windows makefile(旨在与 nmake 一起使用)。我想安排这样的事情,每当我对我的项目执行“重建”时,也会使用适当的配置(调试/发布、32/64 位等)重建开源项目。
我自己的项目相当简单,但并非微不足道。我浪费了最初的几天,试图弄清楚如何直接或使用 CMake 生成我自己的 nmake makefile。尽管有相当多的 GNU make 经验,但这让我失去了生存的意愿。康复后,我决定坚持使用 Visual Studio 项目文件来构建我自己的项目,并定义一个“预构建事件”以在供应商为我的开源库提供的 makefile 上执行 nmake。
例如,在我的 32 位发布版本的 Visual Studio 2010 项目页面中,使用英特尔 C++ 编译器,我将 Pre-Build Event 命令行编写为:
call "C:\Program Files (x86)\Intel\Composer XE 2013 SP1\bin\ipsxe-comp-vars.bat" ia32 vs2010
cd ..\..\..\zlib-1.2.8
nmake /f win32\Makefile.msc zlib.lib
cd ..\tiff-4.0.3
nmake /f Makefile.vc lib
(我意识到我也可以将上述内容放入一个批处理文件中,然后调用该批处理文件,但我不想给自己另一个文件来跟踪)。无论如何,这很好用,除了一件事:如果我决定更改我的配置,我想在两个库上执行“nmake clean”,以确保用我的新配置重建它们,类似于的:
call "C:\Program Files (x86)\Intel\Composer XE 2013 SP1\bin\ipsxe-comp-vars.bat" ia32 vs2010
cd ..\..\..\zlib-1.2.8
IF "%BUILDACTION%"=="REBUILD" nmake /f win32\Makefile.msc clean
nmake /f win32\Makefile.msc zlib.lib
cd ..\tiff-4.0.3
IF "%BUILDACTION%"=="REBUILD" nmake /f Makefile.vc clean
nmake /f Makefile.vc lib
不幸的是,我似乎无法确定任何满足 BUILDACTION 角色的环境变量,我也看不到定义一个直接的方法。那么,有什么方法可以做我想做的事情吗,还是我一无所有?
【问题讨论】:
标签: visual-studio-2010 batch-file msbuild makefile nmake