jamfile:将文件复制到不同的目录
jamfile: copy files to different directories
SEARCH_SOURCE = $(DDODBC_LIB_DIR) ;
InstallBin [ FDirName $(TOP) $(BUILDDIR) lib ] : $(DDODBC_LIBS) ;
InstallBin [ FDirName $(TOP) $(BUILDDIR) datadirect V7 lib ] : $(DDODBC_LIBS) ;
只有在第二个目录下才能找到从$(DDODBC_LIBS)复制过来的文件。为什么它们没有被InstallBin复制到第一个目录?
问题是 InstallBin
分别 InstallInto
需要定义一个目标(每个源文件),它表示已安装的文件并且是 install
伪目标的依赖项.他们通过简单地使用 grist 设置为 $(INSTALLGRIST)
的源目标名称来做到这一点。因此,第二个 InstallBin
调用定义了相同的目标,重置了目标的位置(LOCATE
目标上的变量)。因此该文件仅安装到第二个位置。
一个简单但不是特别优雅的解决方法是为 InstallBin
.
的调用之一重新定义 INSTALLGRIST
SEARCH_SOURCE = $(DDODBC_LIB_DIR) ;
InstallBin [ FDirName $(TOP) $(BUILDDIR) lib ] : $(DDODBC_LIBS) ;
oldInstallGrist = $(INSTALLGRIST) ;
INSTALLGRIST = $(INSTALLGRIST)2 ;
InstallBin [ FDirName $(TOP) $(BUILDDIR) datadirect V7 lib ] : $(DDODBC_LIBS) ;
INSTALLGRIST = $(oldInstallGrist) ;
如果您需要更频繁地这样做,一个更优雅的解决方案是创建一个从安装目录派生 INSTALLGRIST
值的包装器规则:
rule InstallBinSafe
{
local INSTALLGRIST = installed-$(1:G=) ;
InstallBin $(1) : $(2) ;
}
然后简单地使用该规则而不是 InstallBin
。
SEARCH_SOURCE = $(DDODBC_LIB_DIR) ;
InstallBin [ FDirName $(TOP) $(BUILDDIR) lib ] : $(DDODBC_LIBS) ;
InstallBin [ FDirName $(TOP) $(BUILDDIR) datadirect V7 lib ] : $(DDODBC_LIBS) ;
只有在第二个目录下才能找到从$(DDODBC_LIBS)复制过来的文件。为什么它们没有被InstallBin复制到第一个目录?
问题是 InstallBin
分别 InstallInto
需要定义一个目标(每个源文件),它表示已安装的文件并且是 install
伪目标的依赖项.他们通过简单地使用 grist 设置为 $(INSTALLGRIST)
的源目标名称来做到这一点。因此,第二个 InstallBin
调用定义了相同的目标,重置了目标的位置(LOCATE
目标上的变量)。因此该文件仅安装到第二个位置。
一个简单但不是特别优雅的解决方法是为 InstallBin
.
INSTALLGRIST
SEARCH_SOURCE = $(DDODBC_LIB_DIR) ;
InstallBin [ FDirName $(TOP) $(BUILDDIR) lib ] : $(DDODBC_LIBS) ;
oldInstallGrist = $(INSTALLGRIST) ;
INSTALLGRIST = $(INSTALLGRIST)2 ;
InstallBin [ FDirName $(TOP) $(BUILDDIR) datadirect V7 lib ] : $(DDODBC_LIBS) ;
INSTALLGRIST = $(oldInstallGrist) ;
如果您需要更频繁地这样做,一个更优雅的解决方案是创建一个从安装目录派生 INSTALLGRIST
值的包装器规则:
rule InstallBinSafe
{
local INSTALLGRIST = installed-$(1:G=) ;
InstallBin $(1) : $(2) ;
}
然后简单地使用该规则而不是 InstallBin
。