上的cmake我想創建一個cmake文件來編譯和鏈接所有內容。
這是迄今爲止我的目錄結構:在我的C++項目中添加wiringPi lib到RaspberryPi
"quadro/minimu9-ahrs" alias home
|-build
|-include
|-src
在我的家目錄
我這個 '的CMakeLists.txt' 文件:
cmake_minimum_required (VERSION 2.6)
project(minimu)
set(HEADER_FILES $("include/*.h")
include_directories(include)
file(GLOB SOURCES "src/*.cpp")
add_executable(minimu ${SOURCES})
add_definitions(-std=c++0x -lwiringPi -lpthread)
#install(TARGETS minimu DESTINATION /usr/lib)
在我的 'SRC' DIR我得到了所有的.cpp文件,並在'包含'我的所有標題。當我comiling,我進入我的build目錄,刪除所有現有的在那裏(從以前的版本),並在現在鍵入
cmake ..
make
我的問題,我在SRC main.cpp中使用「的#include wiringPi。 H」,但是當我做它給了我下面的錯誤項目:
[email protected] ~/quadro/minimu9-ahrs/build $ make
Scanning dependencies of target minimu
[ 20%] Building CXX object CMakeFiles/minimu.dir/src/L3G.cpp.o
[ 40%] Building CXX object CMakeFiles/minimu.dir/src/LSM303.cpp.o
[ 60%] Building CXX object CMakeFiles/minimu.dir/src/main.cpp.o
[ 80%] Building CXX object CMakeFiles/minimu.dir/src/I2CBus.cpp.o
[100%] Building CXX object CMakeFiles/minimu.dir/src/MinIMU9.cpp.o
Linking CXX executable minimu
CMakeFiles/minimu.dir/src/main.cpp.o: In function `frequency_thread(void*)':
main.cpp:(.text+0x1c): undefined reference to `digitalWrite'
main.cpp:(.text+0x38): undefined reference to `digitalWrite'
CMakeFiles/minimu.dir/src/main.cpp.o: In function `signalHandler(int)':
main.cpp:(.text+0xd4): undefined reference to `digitalWrite'
main.cpp:(.text+0xe8): undefined reference to `digitalWrite'
CMakeFiles/minimu.dir/src/main.cpp.o: In function `main':
main.cpp:(.text+0x14c): undefined reference to `wiringPiSetup'
main.cpp:(.text+0x184): undefined reference to `pinMode'
main.cpp:(.text+0x1e8): undefined reference to `pthread_create'
main.cpp:(.text+0x29c): undefined reference to `pthread_join'
collect2: ld returned 1 exit status
CMakeFiles/minimu.dir/build.make:185: recipe for target 'minimu' failed
make[2]: *** [minimu] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/minimu.dir/all' failed
make[1]: *** [CMakeFiles/minimu.dir/all] Error 2
Makefile:72: recipe for target 'all' failed
make: *** [all] Error 2
讓我怎麼告訴在C進行編譯器在哪裏找,以及如何使用wiringPi LIB?有沒有更簡單的方法,而不是刪除我的生成文件夾中的所有內容之前?就像它一次編譯所有'靜態'文件,並且每次只添加更改文件(= main.cpp)。
而且我要到處執行我的程序像
sudo minimu
而不是進入了「建設」目錄,然後鍵入
sudo ./minimu
感謝,如果你能幫助我的傢伙!
對不起,如果我的英語不是那麼好:)
有一個愉快的一天。
路徑應該如何顯示?作爲絕對路徑,或者像我將wiringPi文件夾放在我的include中時:「-L/include/wiringPi /」? – SkyHigh
該路徑應該是libWiring.so所在目錄的絕對路徑。也許-L/lib/libWiring /左右。 –
現在我可以訪問一個覆盆子,並不能抵制建築物配線pi。我使用構建腳本構建它。它產生了一個動態庫的正確安裝,所以-lwiringPi就像你之前使用它應該足以從編譯器引用庫。你從哪裏拿到圖書館? Hier是如何安裝庫的鏈接。 .http://wiringpi.com/download-and-install/ –