c++ - 尝试添加外部库时出现 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 有什么问题?
谢谢。
解决方案
感谢@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})
推荐阅读
- ios - 如何在 ios swift 中将数据附加到 NSMutableArray
- java - 当应用程序部署在wildfly上时,Mysql数据源不起作用
- ios - 只想从 UIMenuController 复制和共享,但代码仍然很不稳定
- php - 从数据库中检索数据以自动填写链接到同一数据库的另一个表单
- java - Java:合并两个哈希图?
- php - 查询数组为多维数组
- c# - 正则表达式将国籍与文本分开
- python - 如何在不运行导入的脚本的情况下在另一个 python 脚本中使用一个变量?
- android - ionic2 App中启动屏幕前的灰屏
- sql - 如何将此 SQL 获取到查询生成器 Laravel 5.5