2016-11-23 40 views
2

我对C++开发和makefiles的一般想法很陌生,所以请耐心等待。我在Ubuntu 16.04 LTS上,如果这是相关的。CMakeLists.txt不会创建可用的生成文件(Ubuntu和C++)

我想编译使用OpenCV库的average-color.cpp。

项目文件夹:

 
bin CMakeLists.txt img lib obj src 

./bin: 

./img: 
test.png 

./lib: 
core.hpp highgui.hpp imgproc.hpp opencv.hpp 

./obj: 
average-color.d calculate-average-color.d makefile-test.d 
average-color.o calculate-average-color.o makefile-test.o 

./src: 
average-color.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}) 

当我运行,将产生一个makefile “的cmake。”从那里开始,运行“make”失败:输出如下(无法在此处很好地格式化)。 http://textuploader.com/d5wks

如果有人发现我的CMakeLists.txt有明显的错误,请解释一下,我还没有找到很多关于这一切的明确解释。

+0

您在“CMakeLists.txt”中缺少'target_link_libraries()' – drescherjm

+0

该链接应该包含哪些内容?我的lib文件夹? –

+0

***我的lib文件夹?***不是文件夹,而是各个库。 @SteveThibault回答说。 – drescherjm

回答

1

添加以下add_executable后:

target_link_libraries(name ${OpenCV_LIBS}) 

这会告诉CMake的你的代码引用链接库特定的可执行文件。指定链接目录只是告诉链接器在哪里找到这些库,target_link_libraries会告诉链接目录中链接哪些库。

+0

这工作,非常感谢你。 –

+0

不客气。你能接受这个答案吗? –

相关问题