在 CMakeLists.txt 中添加 FLTK 库

Posted

技术标签:

【中文标题】在 CMakeLists.txt 中添加 FLTK 库【英文标题】:Add FLTK library in CMakeLists.txt 【发布时间】:2018-08-12 15:25:37 【问题描述】:

我需要在我的 CMakeLists.txt 中添加 FLTK 作为依赖项。 基于<project_root/dist/FLTK> 的库。 它建在<project_root/dist/FLTK/build> 目录中。

这是我的洞配置:

cmake_minimum_required(VERSION 2.8)

set(DIST_DIR "$CMAKE_CURRENT_SOURCE_DIR/dist")
set(FLTK "$DIST_DIR/FLTK")

if(NOT IS_DIRECTORY $FLTK) 
  message("Starting add FLTK library...")
  execute_process(COMMAND git submodule add https://github.com/IngwiePhoenix/FLTK.git "$CMAKE_CURRENT_SOURCE_DIR/dist/FLTK") 
  execute_process(COMMAND git submodule update --init --recursive)
endif()

link_directories("$CMAKE_CURRENT_SOURCE_DIR/dist/FLTK/build")
add_library(fltk "$CMAKE_CURRENT_SOURCE_DIR/dist/FLTK/build/lib")


add_definitions(-Werror -std=c++17)
add_executable(main main.cpp)

怎么了? 谢谢。

【问题讨论】:

您的 CMakeLists.txt 有几个问题。最明显的一个是使用add_library,它用于构建库而不是用于链接(如果这是您想要做的)。一个好的起点可能是CMake tutorial。 "它被构建在 目录中。" - 库已经构建了,还是应该构建它的是您的代码 (CMakeLists.txt)? 是的,@Tsyvarev,它已经建成 你看到***.com/questions/8774593/…关于链接库的问题了吗? 【参考方案1】:

感谢havogtTsyvarev 我找到了解决方案!我不是 CMake 方面的专家,但也许这对某些人有帮助:

cmake_minimum_required(VERSION 2.8)

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

set(DIST_DIR "$CMAKE_CURRENT_SOURCE_DIR/dist")
set(FLTK "$DIST_DIR/FLTK")

if(NOT IS_DIRECTORY $FLTK) 
  message("Starting add FLTK library...")
  execute_process(COMMAND git clone https://github.com/fltk/fltk.git $CMAKE_CURRENT_SOURCE_DIR/dist/FLTK)
  execute_process(COMMAND make -C $CMAKE_CURRENT_SOURCE_DIR/dist/FLTK)
endif()

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)

【讨论】:

以上是关于在 CMakeLists.txt 中添加 FLTK 库的主要内容,如果未能解决你的问题,请参考以下文章

如何将“jni/*.c/cpp”文件添加到 CMakeLists.txt 文件中?

不确定如何将 opencv 库添加到 CMakeLists.txt

如何将 NSIS 的 RequestExecutionLevel 选项添加到 CMakeLists.txt

ros项目 CMakeLists.txt中添加自己的库路径

cmake基础教程(11)add_subdirectory如何添加非子目录的CMakeLists.txt

工程下CmakeLists.txt