Modern CMake (3.23+) supports FILE_SET for managing header installation and usage requirements. Currently, cet_make_library generates an install(TARGETS ...) command that does not include the FILE_SET arguments.
Example:
cet_make_library(LIBRARY_NAME my_lib ...)
target_sources(my_lib PUBLIC FILE_SET HEADERS FILES my_header.hpp)
Result:
This results in a CMake error during generation:
File set "HEADERS" is listed in interface file sets of my_lib but has not been exported
This happens because the install command generated by cet_make_library exports the target but fails to associate the file set with that export. Adding a manual install(TARGETS my_lib ... FILE_SET HEADERS) causes conflicts or doesn't resolve the issue cleanly because cet_make_library has already defined an install rule.
Request:
Update cet_make_library to accept FILE_SET arguments or automatically detect and forward FILE_SET properties to the generated install command.
Modern CMake (3.23+) supports
FILE_SETfor managing header installation and usage requirements. Currently,cet_make_librarygenerates aninstall(TARGETS ...)command that does not include theFILE_SETarguments.Example:
Result:
This results in a CMake error during generation:
File set "HEADERS" is listed in interface file sets of my_lib but has not been exportedThis happens because the
installcommand generated bycet_make_libraryexports the target but fails to associate the file set with that export. Adding a manualinstall(TARGETS my_lib ... FILE_SET HEADERS)causes conflicts or doesn't resolve the issue cleanly becausecet_make_libraryhas already defined an install rule.Request:
Update
cet_make_libraryto acceptFILE_SETarguments or automatically detect and forwardFILE_SETproperties to the generatedinstallcommand.