使用CMakeLists.txt构建qt编译输出make:***没有规则使目标`all'。停止

时间:2016-10-17 13:11:33

标签: c++ qt opencv cmake

使用CMakeLists.txt构建,编译输出如下:

  

make:没有规定制定目标'全部'。停止。

     

20:28:38:进程" / usr / local / bin / cmake"退出代码2.

     

构建/部署项目测试时出错(工具包:Desktop Qt 5.7.0 GCC   64位)执行步骤"制作"

CMakeLists的内容是:

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(test)

file(GLOB SRCS *.c *.cpp *.cc *.h *.hpp)

add_executable(${PROJECT_NAME} ${SRCS})

find_package( OpenCV REQUIRED )

if(OpenCV_FOUND)
    include_directories(${OpenCV_INCLUDE_DIRS})
    link_directories(${OpenCV_LIB_DIR})
    add_definitions(${OpenCV_DEFINITIONS})
    target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
endif(OpenCV_FOUND)

1 个答案:

答案 0 :(得分:2)

从评论中,你自己想出了答案。

顺便说一句,您将OpenCV标记为必需的包,因此测试OpenCV_FOUND无用:如果找不到,则cmake会抛出错误。

documentation

不建议使用GLOB收集源文件
  

我们不建议使用GLOB从源树中收集源文件列表。如果在添加或删除源时没有更改CMakeLists.txt文件,则生成的构建系统无法知道何时要求CMake重新生成。

除非您的cmake版本低于2.8.11,否则您无需拨打include_directorieslink_directoriesadd_definitions:相应的信息将“嵌入” imported targets由变量OpenCV_LIBS表示。你的cmake应该是:

cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
project(test)

add_executable(${PROJECT_NAME}
    # list your files here
)

find_package( OpenCV REQUIRED )

target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})