CMake 使用 find_library() 将自己的库添加到项目中

CMake Add own library to project using find_library()

我目前正在创建一组 类 应该用于 使用 CLion 的不同项目。我的问题是如何实现这个 functionality.

到目前为止,我调查了以下相关问题 这并没有真正解决我的问题:

我创建了两个示例项目 "TestLib" 和 "TestProj":

"TestLib" 的 CMakeList.txt 目前看起来如下:

 cmake_minimum_required(VERSION 3.5)
 project(TestLib)

 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")

 set(SOURCE_FILES src/Class.cpp src/Class.h)
 add_library(TestLib ${SOURCE_FILES})> 

现在,我尝试使用以下方法在 "TestProj" 中使用这个库 CMakeLists.txt:

 cmake_minimum_required(VERSION 3.5)
 project(TestProj)

 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
 find_library(CLASS_LIB TestLib HINTS /home/user/.CLion2016.1/system/cmake/generated/TestLib-7507f101/7507f101/Debug)

 set(SOURCE_FILES main.cpp)
 add_executable(TestProj ${SOURCE_FILES})

 target_link_libraries(TestProj CLASS_LIB)

CMake 找到库但是

  1. 我无法访问图书馆的Class.h
  2. 写全/home/user/.CLion2016.1/...-库的路径好像不对

非常感谢任何帮助。谢谢。

你可以放在项目的根目录下CMakeLists.txt 内容如下:

add_subdirectory(TestLib)
add_subdirectory(TestProj)

之后你可以在 TestProj 的 CMakeLists.txt 中写

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../TestLib)
target_link_libraries(TestProj TestList)

并且不需要使用 find_library

如果目标是让您的库可用于多个其他项目,建议的方法是让您的库项目的安装过程生成 CMake 配置文件。不幸的是,执行此操作的过程有点神秘,但 https://cmake.org/cmake/help/git-master/manual/cmake-packages.7.html#creating-packages 应该为您提供一个如何执行此操作的起点。