CMake: define digidocpp_EXPORTS for static builds#723
Open
lnagel wants to merge 2 commits intoopen-eid:masterfrom
Open
CMake: define digidocpp_EXPORTS for static builds#723lnagel wants to merge 2 commits intoopen-eid:masterfrom
lnagel wants to merge 2 commits intoopen-eid:masterfrom
Conversation
metsma
approved these changes
Mar 16, 2026
metsma
reviewed
Mar 16, 2026
bfd0d1d to
d47e4dc
Compare
metsma
requested changes
Mar 16, 2026
d47e4dc to
abab31b
Compare
metsma
reviewed
Mar 19, 2026
When BUILD_SHARED_LIBS=OFF on Windows, DIGIDOCPP_EXPORT in Exports.h defaults to __declspec(dllimport), which is incorrect for both compiling the library and for consumers linking the static archive. Add a digidocpp_STATIC check in Exports.h that sets DIGIDOCPP_EXPORT to empty. Define digidocpp_STATIC as a PUBLIC compile definition on digidocpp, digidocpp_tsl, and digidocpp_util so downstream consumers also get the correct (empty) export macro. Also remove the duplicate static targets install, already covered by the install(TARGETS ...) export set, and fix if(NOT ...) style.
abab31b to
de1656b
Compare
metsma
reviewed
Mar 23, 2026
Replace the unconditional digidocpp_EXPORTS on digidocpp_tsl and digidocpp_util with a generator expression that selects digidocpp_EXPORTS for shared builds and digidocpp_STATIC for static builds. This avoids having both defines set simultaneously.
metsma
approved these changes
Mar 25, 2026
Contributor
|
Something is still missing: |
Author
|
Which command is this from? I see that CI checks are all successful. I have personally no way to replicate it. |
Contributor
|
Seems like powershell hides windows build failures. |
Author
|
I agree that a static build on GitHub actions would be a good idea. Maybe if you add this on |
Contributor
|
We are currently in code freeze |
Author
|
What would you suggest then? |
Contributor
|
If you do not mind I can use your branch? |
Author
|
Yes, both of my PRs have maintainer edits enabled. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
BUILD_SHARED_LIBS=OFFon Windows, CMake does not definedigidocpp_EXPORTSon thedigidocpptarget (only done automatically for shared libraries)DIGIDOCPP_EXPORTinExports.hto resolve to__declspec(dllimport)instead of__declspec(dllexport)digidocpp_utilanddigidocpp_tsl(line 83-84): setsCOMPILE_DEFINITIONS digidocpp_EXPORTSon the target for static buildsTest plan
BUILD_SHARED_LIBS=OFFon Windows —DIGIDOCPP_EXPORTshould resolve to__declspec(dllexport)BUILD_SHARED_LIBS=ONon Windows — no change, CMake definesdigidocpp_EXPORTSautomatically