On Saturday, November 27, 2021 at 1:13:12 PM UTC-8 David Karr wrote:

> On Sat, Nov 27, 2021 at 11:57 AM Ian Lance Taylor <ia...@golang.org> 
> wrote:
>
>> On Sat, Nov 27, 2021 at 11:01 AM David Karr <davidmic...@gmail.com> 
>> wrote:
>> >
>> > I'm aware of the "build constraints" mechanism, which lets individual 
>> files be only compiled on specific oses or architectures.
>> >
>> > I am constructing an app that has a single cgo module, which is the 
>> "meat" of the application (longest module). In my poc, the cgo header 
>> specifies a lib path with "linux" in the path, to point to the linux 
>> libraries. I haven't constructed a Makefile for this yet, but this works 
>> well with vscode and simple testing.
>> >
>> > I now have to consider how to build this on Windows, although the 
>> deployment target for this will be Linux. I have to allow for testing of it 
>> on Windows, if possible. I thought perhaps that I could change the lib path 
>> in the cgo header to reference "${GOOS}" instead, but it doesn't seem to 
>> recognize that.
>> >
>> > It's not reasonable to use build constraints for this, because it seems 
>> like I would have to duplicate the entire module in order to vary the lib 
>> path.  That would be absurd.
>> >
>> > What are reasonable strategies for this, including facilitating testing 
>> of it in vscode on both Linux and Windows?
>>
>> If I'm reading this correctly, you can address this by using
>> GOOS/GOARCH build tags in your #cgo comments.  See, for example,
>> https://go.dev/src/runtime/cgo/cgo.go?#L14.  This is documented at
>> https://pkg.go.dev/cmd/cgo#hdr-Using_cgo_with_the_go_command.
>>
>> Ian
>>
>
> So you're saying I could do this:
>
>     // #cgo linux LDFLAGS: -L${SRCDIR}/../lib/linux -llib1 -llib2 -llib3 
> -llib4
>     // #cgo windows LDFLAGS: -L${SRCDIR}/../lib/windows -llib1 -llib2 
> -llib3 -llib4
>
> If so, that would be much better than duplicating the entire file. It 
> looks a little odd to duplicate the library list, but if that's the best we 
> can do, I guess that's it.
>
> I'll test this later.
>

Hm, I'm going to guess you're going to tell me that I can't quite do that, 
as I just verified that, unless I'm simply doing it wrong.  I wrote almost 
exactly what I showed there.  I'm having some trouble figuring out how to 
set up the C compiler on Windows, but I have verified with other 
applications that I can cross-compile a build on Linux for Windows, so I 
simply ran this:

    GOOS=windows go build -o target/dist/windows-amd64

This fails with:

    imports voltagems/voltagefuncs: build constraints exclude all Go files 
in /home/dk068x/git/voltagego/voltagefuncs

Any way to fix this?

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/3612945d-3a99-4bf8-9ea1-262f4f5fa244n%40googlegroups.com.

Reply via email to