Manage export for static library under Windows #161
Merged
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.
Under Windows, with previous code, all objects were exported with the flag
__declspec(dllexport)
, and imported with__declspec(dllimport)
.It works well when you link with dynamic library (and its import library) but failed when you try to link with the new static library.
To fix that, I added a new flag named
BZ_STATIC_LIB
which is defined during static library compilation (see CMakeLists.txt).This flag need to be also be added in third party software when user want to link with static library under Windows, for example in CXXFLAGS:
-DBZ_STATIC_LIB
This PR do not impact the dynamic linking, which is the standard behavior.
It will be possible to add the flag in CMake config file to automatize the definition of it.
Also in pkg-config generated file.