首页 > 解决方案 > 尝试添加外部库时出现 CMake 错误

问题描述

我需要在我的项目中添加一个外部库。这是项目结构:

/- src/
    - my source files here…
 |- dist/
    |- FLTK
        |- lib/
            |- libfltk.a
            |- libfltk_forms.a
        |- FL
 |- build/
 |- main.cpp

这是我的 CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++17")

find_library(LibFltk ${CMAKE_CURRENT_SOURCE_DIR}/dist/FLTK/lib/libfltk.a)
find_library(LibFltk_Forms ${CMAKE_CURRENT_SOURCE_DIR}/dist/FLTK/lib/libfltk_forms.a)

if(APPLE)
  find_library(COCOA Cocoa)
endif()

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/dist/FLTK)

add_executable(${CMAKE_CURRENT_SOURCE_DIR}/build/main ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)

target_link_libraries(${CMAKE_CURRENT_SOURCE_DIR}/build/main ${LibFltk} ${COCOA})

错误信息:

    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
LibFltk
    linked by target "keyplay" in directory /Users/coder/Desktop/sandbox/keyplay

-- 配置不完整,出现错误!

当我尝试从终端编译我的项目时,它运行良好。我就是这样做的:

g++ -std=c++17 -c main.cpp -I dist/FLTK \
    && g++ main.o -o main -L dist/FLTK/lib -lfltk_forms \
       -lfltk_images \
       -lfltk \
       -lfltk_gl \
       -framework Cocoa \
    && ./main

我的 CMakeLists.txt 有什么问题?

谢谢。

标签: c++cmakefltk

解决方案


感谢@Matthieu Brucher。这是正确的配置:

cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++17")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/dist/FLTK)

add_executable(keyplay ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)

find_library(LibFltk libfltk.a PATHS ${CMAKE_CURRENT_SOURCE_DIR}/dist/FLTK/lib/)

if(APPLE)
  find_library(COCOA Cocoa)
endif()

target_link_libraries(keyplay ${LibFltk} ${COCOA})

推荐阅读