Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Align windows package layout #121

Closed
mara004 opened this issue Aug 24, 2023 · 3 comments
Closed

Align windows package layout #121

mara004 opened this issue Aug 24, 2023 · 3 comments

Comments

@mara004
Copy link
Contributor

mara004 commented Aug 24, 2023

For all non-windows platforms, the actual binary is in lib/.
For windows, it is in bin/, while lib/ contains a special pdfium.dll.lib file.
That's a bit unexpected/confusing and needs special handling by packagers.

How about putting both files in lib/ ?

@bblanchon
Copy link
Owner

As far as I remember this is the convention.
I just looked at CMake's documentation and it goes in the same way:

LIBRARY
Target artifacts of this kind include:

  • Shared libraries, except
    • DLLs (these go to RUNTIME, see below),
    • on macOS when marked as FRAMEWORK (see below).

RUNTIME

  • Target artifacts of this kind include:
    • Executables (except on macOS when marked as MACOSX_BUNDLE, see BUNDLE below);
    • DLLs (on all Windows-based systems including Cygwin; note that the accompanying import libraries are of kind ARCHIVE).
Target Type GNUInstallDirs Variable Built-In Default
RUNTIME ${CMAKE_INSTALL_BINDIR} bin
LIBRARY ${CMAKE_INSTALL_LIBDIR} lib
ARCHIVE ${CMAKE_INSTALL_LIBDIR} lib
PRIVATE_HEADER ${CMAKE_INSTALL_INCLUDEDIR} include
PUBLIC_HEADER ${CMAKE_INSTALL_INCLUDEDIR} include
FILE_SET (type HEADERS) ${CMAKE_INSTALL_INCLUDEDIR} include

@mara004
Copy link
Contributor Author

mara004 commented Aug 24, 2023

Indeed, it is also for conda:

Unix-style packages on Windows, which are usually statically linked to executables, are built in a special Library directory under the build prefix. The environment variables listed in the following table are defined only on Windows.

CYGWIN_PREFIX

Same as PREFIX, but as a Unix-style path, such as /cygdrive/c/path/to/prefix.

LIBRARY_BIN

<build prefix>\Library\bin.

LIBRARY_INC

<build prefix>\Library\include.

LIBRARY_LIB

<build prefix>\Library\lib.

LIBRARY_PREFIX

<build prefix>\Library.

SCRIPTS

<build prefix>\Scripts.


@mara004 mara004 closed this as not planned Won't fix, can't repro, duplicate, stale Aug 24, 2023
@mara004
Copy link
Contributor Author

mara004 commented Aug 24, 2023

Since this is the convention I think it's fine as-is. Just something packagers need to bear in mind.

@mara004 mara004 mentioned this issue Aug 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants