[swift-users] How to create custom module without the package manager?

Bee bee.ography at gmail.com
Sun Dec 13 09:26:01 CST 2015


I've made a bash script to automate custom module compilation on Linux.
Check it out here: http://beeography.koding.io/viewcode.cgi?file=swiftmod.sh


On Sun, Dec 13, 2015 at 9:44 PM, cooper liu <1989lzhh at gmail.com> wrote:

> hi,
> here is my test under mac os x
>
> simple version
> $swiftc -emit-module -emit-library greet.swift
> emit greet.swiftdoc greet.swiftmodule libgreet.dylib
> $swiftc -I. -L. -lgreet test.swift
> emit test
>
> detailed version
> $swiftc -emit-module -emit-library -module-name greet -module-link-name mm
> -o libmm.dylib  greet.swift
> emit greet.swiftdoc greet.swiftmodule libmm.dylib
> $swiftc -I. -L. -lmm test.swift
> emit test
>
> 2015-12-12 23:05 GMT+08:00 Bee via swift-users <swift-users at swift.org>:
>
>> Sorry… I answer my own question. It need -l<module-name> argument. So,
>> the last command should be:
>>
>> $ swiftc test.swift -lgreet
>>
>> then it emitted a runnable app. I wonder why does it need an explicit
>> module name in the command line? While there is already an import clause
>> within the source file. Anyway, problem solved.
>>
>> Thank you. :)
>>
>>
>> On Sat, Dec 12, 2015 at 9:53 PM, Bee <bee.ography at gmail.com> wrote:
>>
>>> Sorry… forgot to say. I'm using Swift v.2.2 on Linux Ubuntu 14.04.
>>>
>>>
>>> On Sat, Dec 12, 2015 at 9:50 PM, Bee <bee.ography at gmail.com> wrote:
>>>
>>>> Hi all,
>>>>
>>>> I'd like to create my own simple custom module, but I don't want to use
>>>> the complicated package manager. Package manager is overkill for a simple
>>>> single source file module. So, here's what I've tried.
>>>>
>>>> file: greet.swift
>>>>
>>>> public func askName() {
>>>> print("What's your name? ")
>>>> let name = readLine()!
>>>> print("Hello, \(name)... good to see you!")
>>>> }
>>>>
>>>> file: main.swift
>>>>
>>>> askName()
>>>>
>>>> terminal:
>>>>
>>>> $ swiftc -emit-library -emit-object greet.swift -module-name greet
>>>>
>>>> emits greet.o
>>>>
>>>> $ ar rcs libgreet.a greet.o
>>>>
>>>> emits libgreet.a
>>>>
>>>> $ swiftc -emit-module greet.swift -module-name greet
>>>>
>>>> emits greet.swiftmodule and greet.swiftdoc
>>>>
>>>> All went well, so I think now I already have had the "greet" module.
>>>> Let's try to use it…
>>>>
>>>> file: test.swift
>>>>
>>>> import greet
>>>> askName()
>>>>
>>>> terminal:
>>>>
>>>> $ swiftc test.swift
>>>> clang: warning: argument unused during compilation: '-F/home/username'
>>>> /tmp/test-b63aab.o: In function `main':
>>>> /tmp/test-b63aab.o:(.text+0x41): undefined reference to
>>>> `_TF5greet7askNameFT_T_'
>>>> clang: error: linker command failed with exit code 1 (use -v to see
>>>> invocation)
>>>> <unknown>:0: error: link command failed with exit code 1 (use -v to see
>>>> invocation)
>>>>
>>>> What's happening? What's wrong? How can I fix it?
>>>>
>>>> Thank you.
>>>>
>>>> Regards,
>>>>
>>>> --
>>>> -Bee-
>>>>
>>>>
>>>
>>>
>>> --
>>> -Bee-
>>>
>>>
>>
>>
>> --
>> -Bee-
>>
>>
>> _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
>>
>>
>


-- 
-Bee-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20151213/f11f737b/attachment.html>


More information about the swift-users mailing list