我正在使用DDK构建项目。几个构建目标生成小型内部库 - 为了简单起见,我们称它们为LibA.lib,LibB.lib和LibC.lib。但是LibA的代码引用了来自LibB和LibC的代码。要在项目中使用LibA,还需要包含LibB.lib和LibC.lib以解决所有依赖关系。 我想要做的是将LibB和LibC链接到LibA,这样用户只需要包含LibA.lib。我怎样才能做到这一点?使用WinDDK静态链接多个库
为力霸源文件看起来是这样的:
TARGETNAME=LibA
TARGETTYPE=LIBRARY
TARGETPATH=..\lib\$(DDKBUILDENV)
INCLUDES = .; \
..\LibB; \
..\LibC; \
$(CRT_INC_PATH) \
$(SDK_INC_PATH)
SOURCES = LibA_main.cpp \
LibA_file2.cpp \
LibA_file3.cpp
据我所知,您可以手动链接库与link.exe
;例如,
link.exe /lib LibA.lib LibB.lib LibC.lib
但如果可能的话,我想一些方法来实现这一目标,作为力霸构建过程的一部分同样的效果,因为在构建过程中稍后一些目标依靠力霸。
谢谢!
这不是问题的答案。 – bmargulies 2012-09-14 20:57:31
非常迟的回复,但实际上,@ bmargulies,这是对这个问题的回答。 +1。我在构建过程中寻找一种方法将其他库静态链接到目标库(LibA)。这正是这样做的。但是,如果要链接到LibA的库也是作为构建过程的一部分构建的,则存在竞争条件,因为无法通过某种类型的包装脚本强制构建订单而无法保证它们已经创建。 'build.exe'并行运行构建。 – user1354557 2013-02-19 16:31:03