1. 頭文件指定
1.1 include_directories(path)
包含程序編譯所需庫的頭文件:path——頭文件所在目錄;
相當於Makefile中使用CFLAGS+=-Ipath;-Ipath,path——頭文件所在目錄。
編譯時,查找優先級高於默認的/usr/include和/usr/local/include;
舉例:如針對opencv2編譯,添加其頭文件為:
include_directories(/path/to/opencv/opencv2/include) include_directories(/path/to/opencv/opencv2/include/opencv)
上述方式也可寫為:
set(OpenCV_INCLUDE_DIRS /path/to/opencv/opencv2/include /path/to/opencv/opencv2/include/opencv) include_directories(${OpenCV_INCLUDE_DIRS})
2. 庫文件指定
2.1 link_directories(path)
指定程序編譯所需要的庫路徑,path——庫文件所在目錄;
相當於Makefile中的LDFLAGS += -Lpath,path——庫文件所在目錄;
也相當於LD_LIBRARY_PATH添加路徑的作用;
舉例,包含opencv的庫路徑如下:
link_directories(dirPath1 dirPath2 ...)
2.2 link_libraries(path)
指定需要添加鏈接庫的庫文件的路徑;注意不是庫文件所在目錄,而是庫文件的路徑;
包含Opencv的庫文件如下:
link_libraries(/path/to/lib/libopencv_ml.so) link_libraries(/path/to/lib/libopencv_core.so)
也可寫為:
set(OpenCV_LIBS /path/to/opencv2/lib/libopencv_ml.so /path/to/opencv2/lib/libopencv_core.so.2.4 /path/to/opencv2/lib/libopencv_imgproc.so) link_libraries(${OpenCV_LIBS})
注:
include ——頭文件相關;
link ——庫文件相關;
directory ——目錄相關;
library ——直接路徑相關;