我是C 开发的新手,以及Makefiles一般的想法,所以请忍受我。我在Ubuntu 16.04 LTS上,如果有相关的话。
我正在尝试编译使用openCV库的平均color.cpp。
项目文件夹:
bin cmakelists.txt img lib obj src。/垃圾桶:./img:test.png./lib:core.hpp highgui.hpp imgproc.hpp opencv.hpp./obj:平均颜色。D计算平均颜色。Dmakefile-test.d平均color.o计算平均color.o makefile-test.o./src:平均颜色。cpp
我可以通过以下方式编译工作文件:
g++ average-color.cpp -o test `pkg-config --cflags --libs opencv`
在SRC目录中,这使我相信这不是代码错误,这是使用Cmake或我发现的某些Makefiles时的编译错误。
下面是我的cmakelists文件:
cmake_minimum_required(VERSION 2.8)
PROJECT (name)
find_package(OpenCV REQUIRED )
set( NAME_SRC
src/average-color.cpp
)
set( NAME_HEADERS
lib/core.hpp
lib/highgui.hpp
lib/imgproc.hpp
lib/opencv.hpp
)
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/lib )
link_directories( ${CMAKE_BINARY_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
add_executable( name ${NAME_SRC} ${NAME_HEADERS} )
当我运行" cmake"时,会生成一个makefile。从那里,运行" Make"失败:使用以下输出(在这里无法格式化)。http://textuploader.com/d5wks
如果有人发现我的cmakelists.txt,请解释一下,我还没有发现很多清楚的解释。
add_executable之后添加以下内容:
target_link_libraries(name ${OpenCV_LIBS})
这将告诉CMAKE将特定库链接到您的代码引用到可执行文件。指定链接目录只是告诉链接器在哪里可以找到这些库,target_link_libraries告诉链接目录中的链接哪些库。