Closed Nobu19800 closed 2 years ago
Is your feature request related to a problem? Please describe.
idl/CMakeLists.txt
rtm-skelwrapper2
***_spec[]
static const char* const
static const char*
Describe the solution you'd like
RTC Builderが出力するC++ファイルを2.0、1.2のどちらでもビルドできるようにする。
Describe alternatives you've considered
rtm-config
rtm-skelwrapper
OPENRTM_IDL_WRAPPER
OPENRTM_IDL_WRAPPER_FLAGS
以下は修正前。
if(NOT WIN32) execute_process(COMMAND rtm-config --prefix OUTPUT_VARIABLE OPENRTM_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND rtm-config --idlflags OUTPUT_VARIABLE OPENRTM_IDLFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) separate_arguments(OPENRTM_IDLFLAGS) execute_process(COMMAND rtm-config --idlc OUTPUT_VARIABLE OPENRTM_IDLC OUTPUT_STRIP_TRAILING_WHITESPACE) set(_rtm_skelwrapper_command "rtm-skelwrapper") else(NOT WIN32) set(_rtm_skelwrapper_command "rtm-skelwrapper.py") endif(NOT WIN32) get_filename_component(_idl ${_idl_file} NAME_WE) set(_idl_srcs_var ${_idl}_SRCS) _IDL_OUTPUTS(${_idl} ${CMAKE_CURRENT_BINARY_DIR} ${_idl_srcs_var}) add_custom_command(OUTPUT ${${_idl_srcs_var}} COMMAND python ${OPENRTM_DIR}/bin/${_rtm_skelwrapper_command} --include-dir= --skel-suffix=Skel --stub-suffix=Stub --idl-file=${_idl}.idl COMMAND ${OPENRTM_IDLC} ${OPENRTM_IDLFLAGS} ${_idl_file}
以下は修正後。
if(${OPENRTM_VERSION_MAJOR} LESS 2) if(NOT WIN32) execute_process(COMMAND rtm-config --prefix OUTPUT_VARIABLE OPENRTM_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND rtm-config --idlflags OUTPUT_VARIABLE OPENRTM_IDLFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) separate_arguments(OPENRTM_IDLFLAGS) execute_process(COMMAND rtm-config --idlc OUTPUT_VARIABLE OPENRTM_IDLC OUTPUT_STRIP_TRAILING_WHITESPACE) set(_rtm_skelwrapper_command "rtm-skelwrapper") else(NOT WIN32) set(_rtm_skelwrapper_command "rtm-skelwrapper.py") endif(NOT WIN32) set(OPENRTM_IDL_WRAPPER ${_rtm_skelwrapper_command}) set(OPENRTM_IDL_WRAPPER_FLAGS --include-dir= --skel-suffix=Skel --stub-suffix=Stub --idl-file=${_idl}.idl) endif() add_custom_command(OUTPUT ${${_idl_srcs_var}} COMMAND ${_python_command} ${OPENRTM_DIR}/bin/${OPENRTM_IDL_WRAPPER} ${OPENRTM_IDL_WRAPPER_FLAGS} --idl-file=${_idl}.idl COMMAND ${OPENRTM_IDLC} ${OPENRTM_IDLFLAGS} ${_idl_file}
***_spec
#if RTM_MAJOR_VERSION >= 2 static const char* const test_spec[] = #else static const char* test_spec[] = #endif
Additional context 修正したファイル一式を添付します。修正したファイルはidl/CMakeLists.txt、src/testIDL.cppの2つです。
src/testIDL.cpp
testIDL.zip
@ga-sakamoto さん、こちらの変更をお願いできますでしょうか?
Is your feature request related to a problem? Please describe.
idl/CMakeLists.txt
について、OpenRTM-aist 2.0ではrtm-skelwrapperコマンドがrtm-skelwrapper2
に変更されるため、そのままではビルドできない***_spec[]
定数の修飾子がstatic const char* const
(1.2.2以前はstatic const char*
)であり、OpenRTP 2.0ではこの形式で出力するが、OpenRTM-aist 1.2でもビルドできるようにしたいDescribe the solution you'd like
RTC Builderが出力するC++ファイルを2.0、1.2のどちらでもビルドできるようにする。
Describe alternatives you've considered
idl/CMakeLists.txt
については、以下のようにrtm-config
コマンド実行やrtm-skelwrapper
コマンドの設定等をOpenRTM-aist 1.xでのみ実行するように分岐する。2.0以上ではOpenRTMをfind_packageで検出した時に設定された変数OPENRTM_IDL_WRAPPER
、OPENRTM_IDL_WRAPPER_FLAGS
を使用する。以下は修正前。
以下は修正後。
***_spec
については、以下のようにバージョンで分岐する。Additional context 修正したファイル一式を添付します。修正したファイルは
idl/CMakeLists.txt
、src/testIDL.cpp
の2つです。testIDL.zip