2016-08-15 17 views
0

私のプロジェクトではxbee external libraryROSを使いたいです。 元はexeファイルを作るときにmakefileを使います。しかし、ROSはcatkinを使用しているので、exeファイルを作成する必要がありますCmakelists.txt 私は同じエラーで固まっていますundefined reference ..、私はできる限りあらゆる方向性に従っています。Cmakelists.txtで定義されていない参照

マイプロジェクトのディレクトリ構造は次のようになります。

. 
├── xbee_ansic_library 
    ├── include - 3 subdirectories have h file 
     ├── wpan 
     ├── xbee 
     └── zigbee 
    ├── src - subdirectories have c file 
     ├── wpan 
     ├── xbee 
     └── zigbee    
└── my_project 
     ├── src 
      └── main.cpp 
     └── CMakeLists.txt 

と元のmakefileがthisように見えるだったので、私は以下のようにMY_PROJECT/CmakeLists.txtを書きました。

project(my_project) 

## Declare a catkin package 
catkin_package() 

# %EndTag(FULLTEXT)% 

include_directories(include ${catkin_INCLUDE_DIRS}) 
include_directories(~/catkin_ws/src/xbee_ansic_library/include) 
include_directories(~/catkin_ws/src/my_project/include) 

LINK_DIRECTORIES(~/catkin_ws/src/xbee_ansic_library/src) 
LINK_DIRECTORIES(~/catkin_ws/src/my_project/src) 

add_library(base_OBJECTS 
${xbee_ansic_library_SRC_POSIX}/xbee_platform_posix.c 
${xbee_ansic_library_SRC_POSIX}/xbee_serial_posix.c 
${xbee_ansic_library_SRC_UTIL}/hexstrtobyte.c 
${xbee_ansic_library_SRC_UTIL}/memcheck.c 
${xbee_ansic_library_SRC_UTIL}/swapbytes.c 
${xbee_ansic_library_SRC_UTIL}/swapcpy.c 
${xbee_ansic_library_SRC_UTIL}/hexdump.c src/parse_serial_args.c) 

add_library(xbee_OBJECTS 
${base_OBJECTS} 
${xbee_ansic_library_SRC_WPAN}/wpan_types.c 
${xbee_ansic_library_SRC_XBEE}/xbee_device.c 
${xbee_ansic_library_SRC_XBEE}/xbee_atcmd.c) 

.... 


add_executable(main src/main.cpp) 
target_link_libraries(main ${catkin_LIBRARIES} main_OBJECTS) 
add_dependencies(main my_project_generate_messages_cpp) 

しかし、私はcatkin_makeでコマンドをするとき、私はエラー

CMakeFiles/main.dir/src/main.cpp.o: In function main': main.cpp:(.text+0x177): undefined reference to xbee_dev_dump_settings' collect2: error: ld returned 1 exit status

しかしxbee_dev_dump_settingsxbee_ansic_library/include/xbee/device.hxbee_ansic_library/src/xbee/xbee_device.cであるなりました。 エラーはundefined reference ..ではないので、not declared ..私はヘッダーでうまくいったと思います。

次に何をする必要がありますか?

答えて

0

エラーがリンク段階にあるため、おそらくtarget_link_libraries行に関連しています。私はあなたが作成するxbeeとベースライブラリも指定する必要があると信じています。

target_link_libraries(main ${catkin_LIBRARIES} base_OBJECTS xbee_OBJECTS) 
関連する問題