@@ -111,17 +111,19 @@ def call_build_tool(
111
111
if install and build_tool == 'catkin_make_isolated' :
112
112
cmd .append ('--install' )
113
113
114
+ if args :
115
+ cmd += args
116
+
117
+ # since `args` might contain the following arguments already it must be
118
+ # ensured that the --* is not duplicated since only the last will be used
114
119
if cmake_args :
115
- cmd += [ '--cmake-args' ] + cmake_args
120
+ _insert_nargs_arguments ( cmd , '--cmake-args' , cmake_args )
116
121
117
122
if make_args :
118
123
if build_tool == 'catkin_make_isolated' :
119
- cmd += [ '--catkin-make-args' ] + make_args
124
+ _insert_nargs_arguments ( cmd , '--catkin-make-args' , make_args )
120
125
elif build_tool == 'colcon' :
121
- cmd += ['--cmake-target' ] + make_args
122
-
123
- if args :
124
- cmd += args
126
+ _insert_nargs_arguments (cmd , '--cmake-target' , make_args )
125
127
126
128
cmd = ' ' .join (cmd )
127
129
@@ -158,3 +160,11 @@ def call_build_tool(
158
160
print ("Invoking '%s' in '%s'" % (cmd , workspace_root ))
159
161
return subprocess .call (
160
162
cmd , cwd = workspace_root , shell = True , stderr = subprocess .STDOUT , env = env )
163
+
164
+
165
+ def _insert_nargs_arguments (cmd , argument_name , argument_values ):
166
+ if argument_name not in cmd :
167
+ cmd += [argument_name ] + argument_values
168
+ else :
169
+ index = cmd .index (argument_name )
170
+ cmd [index + 1 :index + 1 ] = argument_values
0 commit comments