-
Notifications
You must be signed in to change notification settings - Fork 496
[BUILD] Propagate INTERFACE_COMPILE_DEFINITIONS from API through common_foo_library #3440
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
Merged
Merged
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
04c609c
[BUILD] Propagate INTERFACE_COMPILE_DEFINITIONS from API through comm…
ThomsonTan 4925109
Update PR number
ThomsonTan 106dc93
Merge branch 'main' into fix_dll_examples
ThomsonTan 66c07f6
Merge branch 'main' into fix_dll_examples
ThomsonTan 35b7f87
Merge branch 'main' into fix_dll_examples
marcalff 59d1fea
Merge branch 'main' into fix_dll_examples
marcalff File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The example common foo library headers don't expose otel-cpp headers and that seems to be an important aspect of the example (user instrumentation of a library shouldn't leak otel-cpp if it doesn't need to).
If the executable linking to the dll target
opentelemetry-cpp::opentelemetry_cpp
isn't getting the definitions it needs from the api target, then it points to a missing link by the dll target.Can you try adding
target_link_libraries(opentelemetry_cpp INTERFACE opentelemetry_api)
to the dll's cmake file?opentelemetry-cpp/ext/src/dll/CMakeLists.txt
Line 7 in 4b6f52a
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No strong opinion whether the original fix from @ThomsonTan or the suggestion from @dbarker is the best solution.
Please resolve the code review, so a fix we all agree with can go in the repo.
This is blocking for the next release 1.21.0, as we want to make sure that examples work properly with a consistent build, it affects people trying / evaluating opentelemetry-cpp.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@marcalff Okay to merge now to fix the new examples build and unblock the release.
Users who link to the dll target in their projects will need to explicitly link the API target to get its declarations until we add the API link to the dll target. This can be done in the next release since the issue is not new
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the suggestion from @dbarker with
target_link_libraries(opentelemetry_cpp INTERFACE opentelemetry_api)
could fix the issue, but I suspect the same issue could happen to non-DLL case, probably somehow there is some fallback for the linking in the same executable.I also suggest we merge the current PR and tune the fix later (after the release), because the current PR restores the previous behavior.
File a new issue to track the follow-up #3447.