วันศุกร์ที่ 17 กันยายน พ.ศ. 2553

ลอง point -I -l -L ด้วย pkg-config

จากการตามไปดู build_all.sh

พบว่า มันใช้ pkg-config ด้วยความสงสัยว่า มันเป็นอะไรยังไง เลยลองรันดู
$ pkg-config opencv --cflags
-I/home/dsin/opencv/include/opencv
$ pkg-config opencv --libs
-L/home/dsin/opencv/lib -lcxcore -lcv -lhighgui -lcvaux -lml
$ pkg-config opencv --cflags --libs
-I/home/dsin/opencv/include/opencv -L/home/dsin/opencv/lib -lcxcore -lcv -lhighgui -lcvaux -lml
ว้าว เจ๋งแหะ
ถ้าเป็นอย่างนี้ เราสามารถ
  • ลง library ไว้ในที่ต่างกัน ในคนละเครื่องได้
  • ย้าย library ไปยังที่อื่นๆ ได้
  • โดยไม่ต้องเปลี่ยนตัวแปร เยอะแยะ ใน Makefile

แค่เปลี่ยน PKG_CONFIG_PATH ซึ่งเป็นตัวแปรที่เป็นอิสระจาก svn ได้

วิธีทำ คือ

1. export PKG_CONFIG_PATH=${HOME}/opencv/lib/pkgconfig

2. ซึ่งในโฟลเดอร์ ${HOME}/opencv/lib/pkgconfig มีไฟล์ opencv.pc อยู่ ซึ่งวิธีเขียน เป็นตามนี้
# Package Information for pkg-config

prefix=/home/dsin/opencv
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/opencv

Name: OpenCV
Description: Intel(R) Open Source Computer Vision Library
Version: 1.1.0
Libs: -L${libdir} -lcxcore -lcv -lhighgui -lcvaux -lml
Cflags: -I${includedir}
3. แค่นี้เราก็สามารถใช้คำสั่ง pkg-config opencv --cflags --libs ซึ่งมันจะให้ผล ตามข้างบนได้เลย
ซึ่ง opencv ในคำสั่งนี้ คือ opencv.pc นั่นเอง

ซึ่งเราระลึกชาติได้ว่า จากการ ลง gsl ใน SIFT C++ library คราวก่อน
มันแอบไปเขียน config ไว้ที่

/usr/lib/pkgconfig/gsl.pc

จึงเรียก pkg-config --cflags gsl ได้นั่นเอง

ไม่มีความคิดเห็น:

LinkWithin

Related Posts Plugin for WordPress, Blogger...