CMake: define digidocpp_EXPORTS for static builds#723
Open
lnagel wants to merge 1 commit intoopen-eid:masterfrom
Open
CMake: define digidocpp_EXPORTS for static builds#723lnagel wants to merge 1 commit intoopen-eid:masterfrom
lnagel wants to merge 1 commit 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
| set(STATIC_TARGETS minizip digidocpp_tsl digidocpp_util) | ||
| target_compile_definitions(digidocpp PUBLIC digidocpp_STATIC) | ||
| target_compile_definitions(digidocpp_tsl PUBLIC digidocpp_STATIC) | ||
| target_compile_definitions(digidocpp_util PUBLIC digidocpp_STATIC) |
Contributor
There was a problem hiding this comment.
Not sure if it will cause any issues but there is on line 83-84 digidocpp_EXPORTS defines.
set_target_properties(digidocpp_util digidocpp_tsl PROPERTIES
COMPILE_DEFINITIONS digidocpp_EXPORTS
maybe add to line 83
target_compile_definitions(digidocpp_tsl PUBLIC $<IF:$<BOOL:BUILD_SHARED_LIBS>,digidocpp_EXPORTS,digidocpp_STATIC>)
target_compile_definitions(digidocpp_util PUBLIC $<IF:$<BOOL:BUILD_SHARED_LIBS>,digidocpp_EXPORTS,digidocpp_STATIC>)
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