premake / premake-core

Premake
https://premake.github.io/
BSD 3-Clause "New" or "Revised" License
3.13k stars 611 forks source link

Linking ".a" archive file is unsupported. #2219

Open tmathews opened 2 weeks ago

tmathews commented 2 weeks ago

What seems to be the problem? Using the links method to include an .a archive file incorrectly supplements the library with a flag instead of just providing the library path. The archive file will be prefixed with -l and the relative path to the file is omitted. e.g. -llibrary.a instead of my/custom/library.a.

What did you expect to happen? I expect the LIBS make variable to be supplemented with the archive file path. e.g. LIBS=... my/custom/library.a.

What have you tried so far? Researching docs for alternative methods. None tried provided the required outcome. Manually adding the archive path to the LIBS variable in the make file successfully statically links.

How can we reproduce this? Use the link method like so:

links({"./my/custom/library.a"})

What version of Premake are you using? 5.0.0-beta2

Jarod42 commented 2 weeks ago

BTW, why using links { "my/custom/library.a" } instead of

links { "rary" } -- without 'lib' prefix ;-)
libdirs { "my/custom" }

?

tmathews commented 2 weeks ago

Because this will produce the incorrect Make file configuration. As stated, it will produce -lrary flags instead of directly linking the archive file.

Additionally putting the .a file in the files list gets ignored too.