Hi, Apologies for not replying to this earlier.
You can have multiple targets in a single package. Each target can either be Swift or C-family. The type of target is determined by the sources contained in it (*.c/*.cpp etc means C target, *.swift means Swift target). So if you want to create multiple C targets, this layout should work: Package.swift Sources/ Bitmap Cubify Cairo/anchor.c <---- This is just an empty file to tell SwiftPM that this is a C target. Cairo/include/Cairo.h Cairo/include/module.modulemap GLFW/anchor.c GLFW/include/GLFW.h GLFW/include/module.modulemap The modulemap is automatically generated, if not provided. This is a package which contains two targets (one C and one Swift): https://github.com/jpsim/Yams If you need to pass a bunch of compiler flags, you can use SwiftPM's pkgConfig feature but that will require you to have a separate repository for Cario and GLFW. You can experiment without creating tags using the edit feature <https://github.com/apple/swift-package-manager/blob/master/Documentation/Usage.md#editable-packages> . PS: You can join SwiftPM slack channel for quicker turn around time: https://lists.swift.org/pipermail/swift-build-dev/Week-of-Mon-20160530/000497.html Thanks, Ankit On Wed, Mar 29, 2017 at 6:06 AM, Michael Ilseman via swift-build-dev < swift-build-...@swift.org> wrote: > This is into uncharted territory for me, but it seems you’re building with > SwiftPM. You’ll probably want to configure extra compiler flags if that’s > possible. You could also bite the bullet and build your C libraries with > SwiftPM as well. Hopefully someone on swift-build-dev can help you out. > > CC-ing Ankit > > > On Mar 28, 2017, at 5:09 PM, Kelvin Ma <kelvinsthirt...@gmail.com> wrote: > > How do I compile a project with many modules? My tree looks like this: > > <Selection_001.png> > > > On Tue, Mar 28, 2017 at 12:47 PM, Michael Ilseman <milse...@apple.com> > wrote: > >> Sure! In this example, I have built libgit2. I have a directory called >> Git, and inside that I have the following module map: >> >> module Git [system] { >> header "<my path>/libgit2/include/git2.h" >> export * >> } >> >> When I run, I use: >> >> swift -I <path-to-“Git”-directory> -L <path-to-built-libgit2> -lgit2 >> foo.swift >> >> inside foo.swift I can: >> >> import Git >> // … use libGit2 >> >> >> Read more about how to write a more appropriate module.map file for your >> purposes at https://clang.llvm.org/docs/Modules.html. For example, you >> might be able to define link flags inside the module.map, use umbrella >> directories, submodules, etc. >> >> >> >> On Mar 28, 2017, at 6:27 AM, Kelvin Ma <kelvinsthirt...@gmail.com> wrote: >> >> Can you give an example? >> >> On Mon, Mar 27, 2017 at 3:59 PM, Michael Ilseman <milse...@apple.com> >> wrote: >> >>> Sure. At a low level, you can create a module.map file and use -L/-l >>> flags in your invocation of Swift. If you want to do so at a higher level, >>> then perhaps SwiftPM can. CCing swift-build-dev for the SwiftPM part. >>> >>> >>> > On Mar 26, 2017, at 3:20 PM, Kelvin Ma via swift-users < >>> swift-users@swift.org> wrote: >>> > >>> > Idk if this has been asked before, but is there a way to import C >>> libraries into a Swift project without creating a local git repo? >>> Preferably something similar to C where you can just `#include` headers and >>> then specify the link flags (in Package.swift?) >>> > >>> > It’s getting very cumbersome to make a bunch of empty git repos just >>> to use libglfw or libcairo. >>> > _______________________________________________ >>> > swift-users mailing list >>> > swift-users@swift.org >>> > https://lists.swift.org/mailman/listinfo/swift-users >>> >>> >> >> > > > _______________________________________________ > swift-build-dev mailing list > swift-build-...@swift.org > https://lists.swift.org/mailman/listinfo/swift-build-dev > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users