makefile - jamfile:将文件复制到不同的目录
问题描述
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
上的变量)。因此,该文件仅安装到第二个位置。
一个简单(如果不是特别优雅)的解决方法是重新INSTALLGRIST
定义InstallBin
.
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
.
推荐阅读
- javascript - 反应:TypeError:无法读取未定义的属性“项目”
- python - 使用 Plotly Dash for Python 从回调中返回 Pandas DataFrame 作为 data_table
- loops - 如何使labview循环停止一次?
- r - plot() 调用认为 data.frame 是原子向量
- tachyons-css - 如何使用 tachyons-custom?
- php - 不同的值寻址到同一页面 - PHP
- node.js - NestJS 获取使用 JWT 身份验证的 GraphQL 解析器中的当前用户
- three.js - 嵌入式 A-Frame 和 rayOrigin:鼠标
- dart - 未调用异步方法
- php - php if 语句关闭服务器连接