-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
Support custom FMT_INC_DIR in pkgconfig and cmake configs #1702
Conversation
When CMAKE_INSTALL_INCLUDEDIR or FMT_INC_DIR override the header installation directory, they should be used instead of ${CMAKE_INSTALL_PREFIX}/include in fmt-targets.cmake and fmt.pc.
@@ -197,8 +197,7 @@ endif () | |||
target_compile_features(fmt INTERFACE ${FMT_REQUIRED_FEATURES}) | |||
|
|||
target_include_directories(fmt PUBLIC | |||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> | |||
$<INSTALL_INTERFACE:include>) |
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.
include
install interface is equivalent to ${CMAKE_INSTALL_PREFIX}/include
.
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 suggest updating INSTALL_INTERFACE:include
here instead of splitting target_include_directories
into two.
set (INSTALL_TARGETS fmt) | ||
if (TARGET fmt-header-only) | ||
set(INSTALL_TARGETS ${INSTALL_TARGETS} fmt-header-only) | ||
endif () |
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.
fmt-header-only has been always enabled since 691a7a9.
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.
Good catch.
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.
Thank you for the PR.
@@ -197,8 +197,7 @@ endif () | |||
target_compile_features(fmt INTERFACE ${FMT_REQUIRED_FEATURES}) | |||
|
|||
target_include_directories(fmt PUBLIC | |||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> | |||
$<INSTALL_INTERFACE:include>) |
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 suggest updating INSTALL_INTERFACE:include
here instead of splitting target_include_directories
into two.
@@ -232,8 +231,7 @@ target_compile_definitions(fmt-header-only INTERFACE FMT_HEADER_ONLY=1) | |||
target_compile_features(fmt-header-only INTERFACE ${FMT_REQUIRED_FEATURES}) | |||
|
|||
target_include_directories(fmt-header-only INTERFACE | |||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> | |||
$<INSTALL_INTERFACE:include>) |
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.
Ditto
set (INSTALL_TARGETS fmt) | ||
if (TARGET fmt-header-only) | ||
set(INSTALL_TARGETS ${INSTALL_TARGETS} fmt-header-only) | ||
endif () |
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.
Good catch.
CMakeLists.txt
Outdated
@@ -264,14 +257,22 @@ if (FMT_INSTALL) | |||
"Installation directory for pkgconfig (.pc) files, a relative path " | |||
"that will be joined to ${CMAKE_INSTALL_PREFIX}, or an arbitrary absolute path.") | |||
|
|||
get_filename_component(FMT_INC_DIR_PARENT "${FMT_INC_DIR}" DIRECTORY) |
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 we should remove /fmt
from FMT_INC_DIR
for consistency with FMT_LIB_DIR
and CMAKE_INSTALL_INCLUDEDIR
.
This makes FMT_INC_DIR an alias for CMAKE_INSTALL_INCLUDEDIR and simplifies generation of pkgconfig and cmake configs.
Done. |
Thanks! |
When
CMAKE_INSTALL_INCLUDEDIR
orFMT_INC_DIR
override the header installation directory, they should be used instead of${CMAKE_INSTALL_PREFIX}/include
infmt-targets.cmake
andfmt.pc
.