-
Notifications
You must be signed in to change notification settings - Fork 63
fix output dir according to configuration;add version and linkflag support #227
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
base: master
Are you sure you want to change the base?
Conversation
WalkthroughThe patch restructures the CMake template logic for setting output directories and properties for executables, static libraries, and shared libraries. It introduces clear, configuration-specific handling for output paths, adds support for custom link flags and shared library versioning, and removes deprecated or redundant conditional blocks. Changes
Poem
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
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.
Actionable comments posted: 0
🧹 Nitpick comments (2)
templates/cmake.mpd (2)
78-80
: Consider migrating to target_link_options() for better CMake compatibility.The linkflags implementation is functional but uses the legacy
LINK_FLAGS
property. For better compatibility with newer CMake versions, consider migrating totarget_link_options()
.-<%if(linkflags)%> -set_target_properties(${PROJECT_TARGET_<%uc(normalize(project_name))%>} PROPERTIES LINK_FLAGS <%linkflags%>) -<%endif%> +<%if(linkflags)%> +target_link_options(${PROJECT_TARGET_<%uc(normalize(project_name))%>} PRIVATE <%linkflags%>) +<%endif%>
87-89
: Consider migrating to target_link_options() for consistency.Similar to the executable linkflags implementation, this uses the legacy
LINK_FLAGS
property. For consistency and better CMake compatibility, consider usingtarget_link_options()
instead.-<%if(linkflags)%> -set_target_properties(${PROJECT_TARGET_<%uc(normalize(project_name))%>} PROPERTIES LINK_FLAGS <%linkflags%>) -<%endif%> +<%if(linkflags)%> +target_link_options(${PROJECT_TARGET_<%uc(normalize(project_name))%>} PRIVATE <%linkflags%>) +<%endif%>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
templates/cmake.mpd
(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
- GitHub Check: ubuntu-24.04 g++-10
- GitHub Check: Codacy Static Code Analysis
- GitHub Check: macos-13-C++17
- GitHub Check: macos-14-C++17
- GitHub Check: VS2022Release32
- GitHub Check: VS2022Debug64
- GitHub Check: build
- GitHub Check: ubuntu-22.04 g++-12
- GitHub Check: windows-2022 vs2022
🔇 Additional comments (4)
templates/cmake.mpd (4)
44-49
: LGTM: Executable output directory configuration is correctly implemented.The configuration-specific setup for executables properly sets both
CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
for the executable output andCMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
for any associated import libraries (relevant on Windows).
51-55
: LGTM: Static library output directory configuration is correctly implemented.The configuration-specific setup for static libraries properly sets
CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
which is the correct CMake variable for static library output paths.
57-62
: LGTM: Shared library output directory configuration is correctly implemented.The configuration-specific setup for shared libraries properly sets both
CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
for import libraries andCMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
for the actual shared library files, which is the correct approach for cross-platform compatibility.
84-86
: LGTM: Version property implementation is correct.Setting the
VERSION
property on shared library targets is the standard CMake approach for library versioning and will properly set the soname on Unix-like systems.
Summary by CodeRabbit
Refactor
New Features