CMake時のライブラリファイルの設定について

7 個の投稿 / 0 new
最終投稿
kskm1255
オフライン
Last seen: 9年 3ヶ月 前
登録日: 2013-05-20 12:30
CMake時のライブラリファイルの設定について

お世話になります.立命館大学の前川と申します.

RTCBuilderで雛型生成後,CMakeLists.txtに以下の文を追加して,外部ライブラリの設定をしているのですが,最後の行がうまくいきません.(Make時にコンパイルはできてもリンクができない状態です.)


include_directories(【追加のインクルードファイルの存在するディレクトリの絶対パス】) link_directories(【追加のライブラリファイルの存在するディレクトリの絶対パス】)target_link_libraries(${PROJECT_Name}) "libYouBotDriver.so") set(PROJECT_NameComp "${PROJECT_Name}Comp") target_link_libraries(${PROJECT_NameComp}) "libYouBotDriver.so") ←この行でエラー

エラー文をみると,「【PROJECT_NameComp】は,このプロジェクトでビルドされません.」の様なことが書かれていました.

お忙しい中恐縮ですが,解決法をご教授いただけると幸いです. よろしくお願いいたします.

環境を以下に記述します. ・Ubuntu 10.04lts ・OpenRTM-aist(C++) 1.1.0-RELEASE (配布されているシェルスクリプトを用いました) ・OpenRTP 1.1.0-RC4 Eclipse 3.8.1 Linux用全部入り ・Java 1.6.0_20 ・CMake version 2.8.0

日本語
gbiggs
オフライン
Last seen: 6年 8ヶ月 前
登録日: 2010-08-02 07:51
[openrtm-users 02804] CMake時のライブラリファイルの設定について

前川様ジェフです。
全部のCMakeLists.txtが見えないので確かに言うことはできませんが、おそらく${PROJECT_NameComp}に入っている名はターゲットではありません。
2013/5/20 <kskm1255@gmail.com>

お世話になります.立命館大学の前川と申します.
RTCBuilderで雛型生成後,CMakeLists.txtに以下の文を追加して,外部ライブラリの設定をしているのですが,最後の行がうまくいきません.(Make時にコンパイルはできてもリンクができない状態です.)
------------------------------------------------------------------------------------
include_directories(【追加のインクルードファイルの存在するディレクトリの絶対パス】)
link_directories(【追加のライブラリファイルの存在するディレクトリの絶対パス】)
target_link_libraries(${PROJECT_Name}) "libYouBotDriver.so")
set(PROJECT_NameComp "${PROJECT_Name}Comp")
target_link_libraries(${PROJECT_NameComp}) "libYouBotDriver.so")
←この行でエラー
------------------------------------------------------------------------------------
エラー文をみると,「【PROJECT_NameComp】は,このプロジェクトでビルドされません.」の様なことが書かれていました.
お忙しい中恐縮ですが,解決法をご教授いただけると幸いです.
よろしくお願いいたします. 環境を以下に記述します.
・Ubuntu 10.04lts ・OpenRTM-aist(C++) 1.1.0-RELEASE
(配布されているシェルスクリプトを用いました) ・OpenRTP
1.1.0-RC4 Eclipse 3.8.1 Linux用全部入り ・Java 1.6.0_20 ・CMake
version 2.8.0

_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users

kskm1255
オフライン
Last seen: 9年 3ヶ月 前
登録日: 2013-05-20 12:30
[openrtm-users 02804] CMake時のライブラリファイルの設定について

ジェフ様 迅速なご返信ありがとうございます.

私の理解としては,ModuleNameとModuleNameCompの2つのプロジェクトに対して,target_link_librariesを適用して,リンク用のファイルを指定しないといけないと思っているのですが,その場合どのように記述すれば良いのでしょうか??

前川

以下にCMakeLists.txtを記載します.
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

project(RTC_KUKA) string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) include("${PROJECT_SOURCE_DIR}/cmake/utils.cmake") set(PROJECT_VERSION 1.0.0 CACHE STRING "RTC_KUKA version") DISSECT_VERSION() set(PROJECT_DESCRIPTION "youbot control") set(PROJECT_VENDOR "AIS Lab.") set(PROJECT_AUTHOR "AIS Lab.") set(PROJECT_AUTHOR_SHORT "AIS Lab.")

# Add an "uninstall" target CONFIGURE_FILE ("${PROJECT_SOURCE_DIR}/cmake/uninstall_target.cmake.in"

    "${PROJECT_BINARY_DIR}/uninstall_target.cmake" IMMEDIATE @ONLY)
ADD_CUSTOM_TARGET (uninstall "${CMAKE_COMMAND}" -P
    "${PROJECT_BINARY_DIR}/uninstall_target.cmake")

#option(BUILD_EXAMPLES "Build and install examples" OFF) option(BUILD_DOCUMENTATION "Build the documentation" ON) #option(BUILD_TESTS "Build the tests" OFF) #option(BUILD_TOOLS "Build the tools" OFF) option(BUILD_IDL "Build and install idl" ON) option(BUILD_SOURCES "Build and install sources" OFF)

option(STATIC_LIBS "Build static libraries" OFF) if(STATIC_LIBS)

    set(LIB_TYPE STATIC)
else(STATIC_LIBS)
    set(LIB_TYPE SHARED)
endif(STATIC_LIBS)

if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

   # Mac OS X specific code
   SET(CMAKE_CXX_COMPILER "g++")
endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

# Set up installation directories set(BIN_INSTALL_DIR "components/bin") set(LIB_INSTALL_DIR "components/lib") set(INC_INSTALL_DIR "components/include/${PROJECT_NAME_LOWER}-${PROJECT_VERSION_MAJOR}") set(SHARE_INSTALL_DIR "components/share/${PROJECT_NAME_LOWER}-${PROJECT_VERSION_MAJOR}")

##############この部分を追加################### include_directories(/home/youbot/youbot_driver) include_directories(/home/youbot/youbot_driver/soem/src) include_directories(${Boost_INCLUDE_DIR}) link_directories(/home/youbot/youbot_driver/lib) link_directories(${Boost_LIBRARIES}) link_directories(pthread)

target_link_libraries(${PROJECT_Name} "libYouBotDriver.so") set(PROJECT_NameComp "${PROJECT_NAME_LOWER}Comp") target_link_libraries(${PROJECT_NameComp} "libYouBotDriver.so")

# Get necessary dependency information find_package(OpenRTM) if(${OpenRTM_FOUND})

  MESSAGE(STATUS "OpenRTM configuration Found")
else(${OpenRTM_FOUND})
  message(STATUS "Use cmake/Modules/FindOpenRTM.cmake in the project")
  list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)
  find_package(OpenRTM REQUIRED)
endif(${OpenRTM_FOUND})

# Universal settings #enable_testing()

# Subdirectories add_subdirectory(cmake) if(BUILD_DOCUMENTATION)

    add_subdirectory(doc)
endif(BUILD_DOCUMENTATION)

#if(BUILD_EXAMPLES) # add_subdirectory(examples) #endif(BUILD_EXAMPLES)

if(BUILD_IDL)

    add_subdirectory(idl)
endif(BUILD_IDL)

add_subdirectory(include) MAP_ADD_STR(headers "include/" comp_hdrs) add_subdirectory(src)

#if(BUILD_TESTS) # add_subdirectory(test) #endif(BUILD_TESTS)

#if(BUILD_TOOLS) # add_subdirectory(tools) #endif(BUILD_TOOLS)

if(BUILD_SOURCES)

    add_subdirectory(include)
    add_subdirectory(src)
endif(BUILD_SOURCES)

# Package creation # By default, do not warn when built on machines using only VS Express: IF(NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS) SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON) ENDIF() include(InstallRequiredSystemLibraries) set(PROJECT_EXECUTABLES ${PROJECT_NAME_LOWER}Comp

    "${PROJECT_NAME_LOWER}Comp")

set(cpack_options "${PROJECT_BINARY_DIR}/cpack_options.cmake")

configure_file("${PROJECT_SOURCE_DIR}/cmake/cpack_options.cmake.in"

    ${cpack_options} @ONLY)

set(CPACK_PROJECT_CONFIG_FILE ${cpack_options}) include(${CPACK_PROJECT_CONFIG_FILE}) include(CPack)

gbiggs
オフライン
Last seen: 6年 8ヶ月 前
登録日: 2010-08-02 07:51
[openrtm-users 02806] (無題)

前川様ジェフです。
${PROJECT_NAME_LOWER}のターゲットはどこで設定されていますか。もしsrc/の中でしたら、add_subdirectory(src)の後にTARGET_LINK_LIBRARIESを使うべきです。
On 20 May 2013 18:46, <kskm1255@gmail.com> wrote:

ジェフ様 迅速なご返信ありがとうございます.
私の理解としては,ModuleNameとModuleNameCompの2つのプロジェクトに対して,target_link_librariesを適用して,リンク用のファイルを指定しないといけないと思っているのですが,その場合どのように記述すれば良いのでしょうか??
前川 以下にCMakeLists.txtを記載します.
---------------------------------- cmake_minimum_required(VERSION 2.8
FATAL_ERROR) project(RTC_KUKA) string(TOLOWER ${PROJECT_NAME}
PROJECT_NAME_LOWER) include("${PROJECT_SOURCE_DIR}/cmake/utils.cmake")
set(PROJECT_VERSION 1.0.0 CACHE STRING "RTC_KUKA version") DISSECT_VERSION()
set(PROJECT_DESCRIPTION "youbot control") set(PROJECT_VENDOR "AIS Lab.")
set(PROJECT_AUTHOR "AIS Lab.") set(PROJECT_AUTHOR_SHORT "AIS Lab.") # Add an
"uninstall" target CONFIGURE_FILE
("${PROJECT_SOURCE_DIR}/cmake/uninstall_target.cmake.in"
"${PROJECT_BINARY_DIR}/uninstall_target.cmake" IMMEDIATE @ONLY)
ADD_CUSTOM_TARGET (uninstall "${CMAKE_COMMAND}" -P
"${PROJECT_BINARY_DIR}/uninstall_target.cmake") #option(BUILD_EXAMPLES "Build
and install examples" OFF) option(BUILD_DOCUMENTATION "Build the
documentation" ON) #option(BUILD_TESTS "Build the tests" OFF)
#option(BUILD_TOOLS "Build the tools" OFF) option(BUILD_IDL "Build and
install idl" ON) option(BUILD_SOURCES "Build and install sources" OFF)
option(STATIC_LIBS "Build static libraries" OFF) if(STATIC_LIBS) set(LIB_TYPE
STATIC) else(STATIC_LIBS) set(LIB_TYPE SHARED) endif(STATIC_LIBS) if
(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # Mac OS X specific code
SET(CMAKE_CXX_COMPILER "g++") endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") #
Set up installation directories set(BIN_INSTALL_DIR "components/bin")
set(LIB_INSTALL_DIR "components/lib") set(INC_INSTALL_DIR
"components/include/${PROJECT_NAME_LOWER}-${PROJECT_VERSION_MAJOR}")
set(SHARE_INSTALL_DIR
"components/share/${PROJECT_NAME_LOWER}-${PROJECT_VERSION_MAJOR}")
##############この部分を追加###################
include_directories(/home/youbot/youbot_driver)
include_directories(/home/youbot/youbot_driver/soem/src)
include_directories(${Boost_INCLUDE_DIR})
link_directories(/home/youbot/youbot_driver/lib)
link_directories(${Boost_LIBRARIES}) link_directories(pthread)
target_link_libraries(${PROJECT_Name} "libYouBotDriver.so")
set(PROJECT_NameComp "${PROJECT_NAME_LOWER}Comp")
target_link_libraries(${PROJECT_NameComp} "libYouBotDriver.so") # Get
necessary dependency information find_package(OpenRTM) if(${OpenRTM_FOUND})
MESSAGE(STATUS "OpenRTM configuration Found") else(${OpenRTM_FOUND})
message(STATUS "Use cmake/Modules/FindOpenRTM.cmake in the project")
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)
find_package(OpenRTM REQUIRED) endif(${OpenRTM_FOUND}) # Universal settings
#enable_testing() # Subdirectories add_subdirectory(cmake)
if(BUILD_DOCUMENTATION) add_subdirectory(doc) endif(BUILD_DOCUMENTATION)
#if(BUILD_EXAMPLES) # add_subdirectory(examples) #endif(BUILD_EXAMPLES)
if(BUILD_IDL) add_subdirectory(idl) endif(BUILD_IDL)
add_subdirectory(include) MAP_ADD_STR(headers "include/" comp_hdrs)
add_subdirectory(src) #if(BUILD_TESTS) # add_subdirectory(test)
#endif(BUILD_TESTS) #if(BUILD_TOOLS) # add_subdirectory(tools)
#endif(BUILD_TOOLS) if(BUILD_SOURCES) add_subdirectory(include)
add_subdirectory(src) endif(BUILD_SOURCES) # Package creation # By default,
do not warn when built on machines using only VS Express: IF(NOT DEFINED
CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON) ENDIF()
include(InstallRequiredSystemLibraries) set(PROJECT_EXECUTABLES
${PROJECT_NAME_LOWER}Comp "${PROJECT_NAME_LOWER}Comp") set(cpack_options
"${PROJECT_BINARY_DIR}/cpack_options.cmake")
configure_file("${PROJECT_SOURCE_DIR}/cmake/cpack_options.cmake.in"
${cpack_options} @ONLY) set(CPACK_PROJECT_CONFIG_FILE ${cpack_options})
include(${CPACK_PROJECT_CONFIG_FILE}) include(CPack)

_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users

kskm1255
オフライン
Last seen: 9年 3ヶ月 前
登録日: 2013-05-20 12:30
[openrtm-users 02806] (無題)

ジェフ様

立命館大学,前川です. 無事ビルドすることができました. お忙しい中,お力添えいただき,ありがとうございました.

kskm1255
オフライン
Last seen: 9年 3ヶ月 前
登録日: 2013-05-20 12:30
[openrtm-users 02807] (無題)

ジェフ様 立命館大学,前川です.
無事ビルドすることができました.
お忙しい中,お力添えいただき,ありがとうございました.

_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users

kskm1255
オフライン
Last seen: 9年 3ヶ月 前
登録日: 2013-05-20 12:30
[openrtm-users 02805] (無題)

ジェフ様 迅速なご返信ありがとうございます.
私の理解としては,ModuleNameとModuleNameCompの2つのプロジェクトに対して,target_link_librariesを適用して,リンク用のファイルを指定しないといけないと思っているのですが,その場合どのように記述すれば良いのでしょうか??
前川 以下にCMakeLists.txtを記載します.
---------------------------------- cmake_minimum_required(VERSION 2.8
FATAL_ERROR) project(RTC_KUKA) string(TOLOWER ${PROJECT_NAME}
PROJECT_NAME_LOWER) include("${PROJECT_SOURCE_DIR}/cmake/utils.cmake")
set(PROJECT_VERSION 1.0.0 CACHE STRING "RTC_KUKA version") DISSECT_VERSION()
set(PROJECT_DESCRIPTION "youbot control") set(PROJECT_VENDOR "AIS Lab.")
set(PROJECT_AUTHOR "AIS Lab.") set(PROJECT_AUTHOR_SHORT "AIS Lab.") # Add an
"uninstall" target CONFIGURE_FILE
("${PROJECT_SOURCE_DIR}/cmake/uninstall_target.cmake.in"
"${PROJECT_BINARY_DIR}/uninstall_target.cmake" IMMEDIATE @ONLY)
ADD_CUSTOM_TARGET (uninstall "${CMAKE_COMMAND}" -P
"${PROJECT_BINARY_DIR}/uninstall_target.cmake") #option(BUILD_EXAMPLES "Build
and install examples" OFF) option(BUILD_DOCUMENTATION "Build the
documentation" ON) #option(BUILD_TESTS "Build the tests" OFF)
#option(BUILD_TOOLS "Build the tools" OFF) option(BUILD_IDL "Build and
install idl" ON) option(BUILD_SOURCES "Build and install sources" OFF)
option(STATIC_LIBS "Build static libraries" OFF) if(STATIC_LIBS) set(LIB_TYPE
STATIC) else(STATIC_LIBS) set(LIB_TYPE SHARED) endif(STATIC_LIBS) if
(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # Mac OS X specific code
SET(CMAKE_CXX_COMPILER "g++") endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") #
Set up installation directories set(BIN_INSTALL_DIR "components/bin")
set(LIB_INSTALL_DIR "components/lib") set(INC_INSTALL_DIR
"components/include/${PROJECT_NAME_LOWER}-${PROJECT_VERSION_MAJOR}")
set(SHARE_INSTALL_DIR
"components/share/${PROJECT_NAME_LOWER}-${PROJECT_VERSION_MAJOR}")
##############この部分を追加###################
include_directories(/home/youbot/youbot_driver)
include_directories(/home/youbot/youbot_driver/soem/src)
include_directories(${Boost_INCLUDE_DIR})
link_directories(/home/youbot/youbot_driver/lib)
link_directories(${Boost_LIBRARIES}) link_directories(pthread)
target_link_libraries(${PROJECT_Name} "libYouBotDriver.so")
set(PROJECT_NameComp "${PROJECT_NAME_LOWER}Comp")
target_link_libraries(${PROJECT_NameComp} "libYouBotDriver.so") # Get
necessary dependency information find_package(OpenRTM) if(${OpenRTM_FOUND})
MESSAGE(STATUS "OpenRTM configuration Found") else(${OpenRTM_FOUND})
message(STATUS "Use cmake/Modules/FindOpenRTM.cmake in the project")
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)
find_package(OpenRTM REQUIRED) endif(${OpenRTM_FOUND}) # Universal settings
#enable_testing() # Subdirectories add_subdirectory(cmake)
if(BUILD_DOCUMENTATION) add_subdirectory(doc) endif(BUILD_DOCUMENTATION)
#if(BUILD_EXAMPLES) # add_subdirectory(examples) #endif(BUILD_EXAMPLES)
if(BUILD_IDL) add_subdirectory(idl) endif(BUILD_IDL)
add_subdirectory(include) MAP_ADD_STR(headers "include/" comp_hdrs)
add_subdirectory(src) #if(BUILD_TESTS) # add_subdirectory(test)
#endif(BUILD_TESTS) #if(BUILD_TOOLS) # add_subdirectory(tools)
#endif(BUILD_TOOLS) if(BUILD_SOURCES) add_subdirectory(include)
add_subdirectory(src) endif(BUILD_SOURCES) # Package creation # By default,
do not warn when built on machines using only VS Express: IF(NOT DEFINED
CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON) ENDIF()
include(InstallRequiredSystemLibraries) set(PROJECT_EXECUTABLES
${PROJECT_NAME_LOWER}Comp "${PROJECT_NAME_LOWER}Comp") set(cpack_options
"${PROJECT_BINARY_DIR}/cpack_options.cmake")
configure_file("${PROJECT_SOURCE_DIR}/cmake/cpack_options.cmake.in"
${cpack_options} @ONLY) set(CPACK_PROJECT_CONFIG_FILE ${cpack_options})
include(${CPACK_PROJECT_CONFIG_FILE}) include(CPack)

_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2160
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク