Following the example given in The Waf Book, I have the setup described below, which builds a shared lib and a static lib, and then links them to an exe. My system is running Windows 7 with VS2013 MSVC.
When I build with the sample wscript
, the build fails with:
Build failed
-> missing file: 'D:\\src\\waf-example\\demo\\build\\lib1.lib'
I noticed that despite the bld.shlib
usage (which adds a task to build a shared lib, named 'lib1', from a.c
), the build output shows
both a DLL and a LIB entry, when I would only expect a DLL entry.
[5/8] cshlib: build\a.c.1.o -> build\lib1.dll build\lib1.lib build\lib1.dll.manifest
The Waf Book shows build output from a Linux system that does not have this problem:
[6/8] cshlib: build/a.c.0.o -> build/liblib1.so
How can I fix this? Thanks.
wscript from The Waf Book
def options(ctx):
ctx.load('compiler_c')
def configure(ctx):
ctx.load('compiler_c')
def build(bld):
bld.shlib(
source = 'a.c',
target = 'lib1'
)
bld.stlib(
source = 'b.c',
use = 'cshlib',
target = 'lib2')
bld.shlib(
source = 'c.c',
target = 'lib3',
use = 'lib1 lib2')
bld.program(
libpath='.',
source = 'main.c',
target = 'app',
use = 'lib3')
files
D:\src\waf-example\demo>tree /F /A
D:.
| a.c
| b.c
| c.c
| main.c
| waf-1.7.15
\---wscript
output
D:\src\waf-example\demo>python waf-1.7.15 clean build --zones=runner
'clean' finished successfully (0.008s)
Waf: Entering directory `D:\src\waf-example\demo\build'
[1/8] c: a.c -> build\a.c.1.o
15:52:00 runner ['C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\BIN\\amd64\\CL.exe', '/nologo', '/IC:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\INCLUDE', '/IC:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\INCLUDE', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\shared', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\um', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\winrt', '..\\a.c', '/FC', '/c', '/Foa.c.1.o']
[2/8] c: b.c -> build\b.c.2.o
15:52:00 runner ['C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\BIN\\amd64\\CL.exe', '/nologo', '/IC:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\INCLUDE', '/IC:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\INCLUDE', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\shared', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\um', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\winrt', '..\\b.c', '/FC', '/c', '/Fob.c.2.o']
[3/8] c: c.c -> build\c.c.3.o
15:52:00 runner ['C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\BIN\\amd64\\CL.exe', '/nologo', '/IC:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\INCLUDE', '/IC:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\INCLUDE', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\shared', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\um', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\winrt', '..\\c.c', '/FC', '/c', '/Foc.c.3.o']
[4/8] c: main.c -> build\main.c.4.o
15:52:00 runner ['C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\BIN\\amd64\\CL.exe', '/nologo', '/IC:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\INCLUDE', '/IC:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\INCLUDE', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\shared', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\um', '/IC:\\Program Files (x86)\\Windows Kits\\8.1\\include\\winrt', '..\\main.c', '/FC', '/c', '/Fomain.c.4.o']
a.c
[5/8] cshlib: build\a.c.1.o -> build\lib1.dll build\lib1.lib build\lib1.dll.manifest
15:52:00 runner ['C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\BIN\\amd64\\LINK.exe', '/NOLOGO', '/MANIFEST', '/IMPLIB:lib1.lib', '/DLL', 'a.c.1.o', '/OUT:D:\\src\\waf-example\\demo\\build\\lib1.dll', '/LIBPATH:C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\LIB\\amd64', '/LIBPATH:C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\LIB\\amd64', '/LIBPATH:C:\\Program Files (x86)\\Windows Kits\\8.1\\lib\\winv6.3\\um\\x64', '/LIBPATH:C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319', '/LIBPATH:C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\LIB\\amd64', '/LIBPATH:C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\ATLMFC\\LIB\\amd64', '/LIBPATH:C:\\Program Files (x86)\\Windows Kits\\8.1\\References\\CommonConfiguration\\Neutral', '/LIBPATH:C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v8.1\\ExtensionSDKs\\Microsoft.VCLibs\\12.0\\References\\CommonConfiguration\\neutral']
b.c
[6/8] cstlib: build\b.c.2.o -> build\lib2.lib
15:52:00 runner ['C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\BIN\\amd64\\LIB.exe', '/NOLOGO', '/OUT:lib2.lib', 'b.c.2.o']
c.c
main.c
15:52:00 runner ['C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\x64\\MT.exe', '/NOLOGO', '-manifest', 'D:\\src\\waf-example\\demo\\build\\lib1.dll.manifest', '-outputresource:D:\\src\\waf-example\\demo\\build\\lib1.dll;2']
Waf: Leaving directory `D:\src\waf-example\demo\build'
Build failed
-> missing file: 'D:\\src\\waf-example\\demo\\build\\lib1.lib'