Skip to content

Commit f2fba06

Browse files
deprecate locally accessible generated header
1 parent d54655e commit f2fba06

File tree

1 file changed

+26
-16
lines changed

1 file changed

+26
-16
lines changed

generate_parameter_library/cmake/generate_parameter_library.cmake

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function(generate_parameter_library LIB_NAME YAML_FILE)
3434
endif()
3535

3636
# Make the include directory
37-
set(LIB_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}/include/)
37+
set(LIB_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include/${PROJECT_NAME})
3838
file(MAKE_DIRECTORY ${LIB_INCLUDE_DIR})
3939

4040
# Optional 3rd parameter for the user defined validation header
@@ -47,14 +47,9 @@ function(generate_parameter_library LIB_NAME YAML_FILE)
4747
cmake_path(APPEND VALIDATE_HEADER ${VALIDATE_HEADER_FILENAME})
4848

4949
# Copy the header file into the include directory
50-
add_custom_command(
51-
OUTPUT ${VALIDATE_HEADER}
52-
COMMAND ${CMAKE_COMMAND} -E copy ${IN_VALIDATE_HEADER} ${VALIDATE_HEADER}
53-
DEPENDS ${IN_VALIDATE_HEADER}
54-
COMMENT
55-
"Running `${CMAKE_COMMAND} -E copy ${IN_VALIDATE_HEADER} ${VALIDATE_HEADER}`"
56-
VERBATIM
57-
)
50+
file(COPY ${IN_VALIDATE_HEADER} DESTINATION ${LIB_INCLUDE_DIR})
51+
# necessary so that #include <param_file.hpp> can be used in the local package (deprecated)
52+
file(COPY ${IN_VALIDATE_HEADER} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include)
5853
endif()
5954

6055
# Set the yaml file parameter to be relative to the current source dir
@@ -72,12 +67,25 @@ function(generate_parameter_library LIB_NAME YAML_FILE)
7267
"Running `${generate_parameter_library_cpp_BIN} ${PARAM_HEADER_FILE} ${YAML_FILE} ${VALIDATE_HEADER_FILENAME}`"
7368
VERBATIM
7469
)
70+
# necessary so that #include <param_file.hpp> can be used in the local package (deprecated)
71+
set(LOCAL_PARAM_HEADER_FILE ${CMAKE_CURRENT_BINARY_DIR}/include/${LIB_NAME}.hpp)
72+
add_custom_command(
73+
OUTPUT ${LOCAL_PARAM_HEADER_FILE}
74+
COMMAND ${CMAKE_COMMAND} -E echo "#pragma warning(\"`#include <${LIB_NAME}>` is deprecated. Use `#include <${PROJECT_NAME}/${LIB_NAME}.hpp>` instead.\")" >> ${LOCAL_PARAM_HEADER_FILE}
75+
COMMAND ${CMAKE_COMMAND} -E cat ${LOCAL_PARAM_HEADER_FILE} ${PARAM_HEADER_FILE} > ${LOCAL_PARAM_HEADER_FILE}.tmp
76+
COMMAND ${CMAKE_COMMAND} -E copy ${LOCAL_PARAM_HEADER_FILE}.tmp ${LOCAL_PARAM_HEADER_FILE}
77+
COMMAND ${CMAKE_COMMAND} -E remove ${LOCAL_PARAM_HEADER_FILE}.tmp
78+
DEPENDS ${PARAM_HEADER_FILE}
79+
COMMENT
80+
"Creating deprecated header file ${LOCAL_PARAM_HEADER_FILE}"
81+
VERBATIM
82+
)
7583

7684
# Create the library target
77-
add_library(${LIB_NAME} INTERFACE ${PARAM_HEADER_FILE} ${VALIDATE_HEADER})
85+
add_library(${LIB_NAME} INTERFACE ${PARAM_HEADER_FILE} ${VALIDATE_HEADER} ${LOCAL_PARAM_HEADER_FILE})
7886
target_include_directories(${LIB_NAME} INTERFACE
79-
$<BUILD_INTERFACE:${LIB_INCLUDE_DIR}>
80-
$<INSTALL_INTERFACE:include/${PROJECT_NAME}/${LIB_NAME}>
87+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
88+
$<INSTALL_INTERFACE:include>
8189
)
8290
set_target_properties(${LIB_NAME} PROPERTIES LINKER_LANGUAGE CXX)
8391
target_link_libraries(${LIB_NAME} INTERFACE
@@ -89,7 +97,9 @@ function(generate_parameter_library LIB_NAME YAML_FILE)
8997
tcb_span::tcb_span
9098
tl_expected::tl_expected
9199
)
92-
install(DIRECTORY ${LIB_INCLUDE_DIR} DESTINATION include/${PROJECT_NAME}/${LIB_NAME})
100+
install(DIRECTORY ${LIB_INCLUDE_DIR} DESTINATION include)
101+
ament_export_dependencies(fmt parameter_traits rclcpp rclcpp_lifecycle rsl tcb_span tl_expected)
102+
set(_AMENT_CMAKE_EXPORT_DEPENDENCIES "${_AMENT_CMAKE_EXPORT_DEPENDENCIES}" PARENT_SCOPE)
93103
endfunction()
94104

95105

@@ -107,7 +117,7 @@ function(generate_parameter_module LIB_NAME YAML_FILE)
107117
# Set the yaml file parameter to be relative to the current source dir
108118
set(YAML_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${YAML_FILE})
109119

110-
set(LIB_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME})
120+
set(LIB_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include/${PROJECT_NAME})
111121
file(MAKE_DIRECTORY ${LIB_INCLUDE_DIR})
112122

113123
find_package(ament_cmake_python)
@@ -127,8 +137,8 @@ function(generate_parameter_module LIB_NAME YAML_FILE)
127137
# Create the library target
128138
add_library(${LIB_NAME} INTERFACE ${PARAM_HEADER_FILE} ${VALIDATE_HEADER})
129139
target_include_directories(${LIB_NAME} INTERFACE
130-
$<BUILD_INTERFACE:${LIB_INCLUDE_DIR}>
131-
$<INSTALL_INTERFACE:include/${PROJECT_NAME}/${LIB_NAME}>
140+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
141+
$<INSTALL_INTERFACE:include>
132142
)
133143

134144
endfunction()

0 commit comments

Comments
 (0)