Skip to content

Commit 7fc96e3

Browse files
committed
Revert cmake include dirs behaviour
1 parent 4d9da2b commit 7fc96e3

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

r2r_cargo.cmake

+8-2
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,23 @@ function(r2r_cargo)
7676
string (REPLACE ";" " " RUSTFLAGS_STR "${RUSTFLAGS}")
7777
set(ENV{RUSTFLAGS} ${RUSTFLAGS_STR})
7878

79+
# get include paths
80+
get_property(includeDirs DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY INCLUDE_DIRECTORIES)
81+
list(REMOVE_DUPLICATES includeDirs)
82+
string (REPLACE ";" ":" CMAKE_INCLUDE_DIRS_STR "${includeDirs}")
83+
set(ENV{CMAKE_INCLUDE_DIRS} ${CMAKE_INCLUDE_DIRS_STR})
84+
7985
# custom target for building using cargo
8086
option(CARGO_CLEAN "Invoke cargo clean before building" OFF)
8187
if(CARGO_CLEAN)
8288
add_custom_target(cargo_target ALL
8389
COMMAND ${CMAKE_COMMAND} "-E" "env" "cargo" "clean" "--profile" "colcon"
84-
COMMAND ${CMAKE_COMMAND} "-E" "env" "RUSTFLAGS=$ENV{RUSTFLAGS}" "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" "cargo" "build" "--profile" "colcon"
90+
COMMAND ${CMAKE_COMMAND} "-E" "env" "RUSTFLAGS=$ENV{RUSTFLAGS}" "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS_PACKAGES}" "cargo" "build" "--profile" "colcon"
8591
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
8692
)
8793
else()
8894
add_custom_target(cargo_target ALL
89-
COMMAND ${CMAKE_COMMAND} "-E" "env" "RUSTFLAGS=$ENV{RUSTFLAGS}" "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" "cargo" "build" "--profile" "colcon"
95+
COMMAND ${CMAKE_COMMAND} "-E" "env" "RUSTFLAGS=$ENV{RUSTFLAGS}" "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS}" "cargo" "build" "--profile" "colcon"
9096
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
9197
)
9298
endif()

r2r_common/src/lib.rs

+13
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,19 @@ pub fn setup_bindgen_builder() -> bindgen::Builder {
4949
non_exhaustive: false,
5050
});
5151
if !cfg!(feature = "doc-only") {
52+
if let Ok(cmake_includes) = env::var("CMAKE_INCLUDE_DIRS") {
53+
// we are running from cmake, do special thing.
54+
let mut includes = cmake_includes.split(':').collect::<Vec<_>>();
55+
includes.sort_unstable();
56+
includes.dedup();
57+
58+
for x in &includes {
59+
let clang_arg = format!("-I{}", x);
60+
println!("adding clang arg: {}", clang_arg);
61+
builder = builder.clang_arg(clang_arg);
62+
}
63+
}
64+
5265
let ament_prefix_var_name = "AMENT_PREFIX_PATH";
5366
let ament_prefix_var = {
5467
let mut ament_str = env::var_os(ament_prefix_var_name).expect("Source your ROS!");

0 commit comments

Comments
 (0)