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

时间:2016-05-08 12:38:27

标签: cmake clion

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

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

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

  • TestLib
    • src
      • Class.h
      • Class.cpp
       
    • CMakeList.txt
  • TestProj
    • main.cpp
    •  CMakeList.txt

“TestLib”的 CMakeList.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)

现在,我尝试使用以下内容在“TestProj”中使用此库  的CMakeLists.txt

{{1}}

CMake找到了库但是

  1. 我无法访问库的 Class.h
  2. 将整个/home/user/.CLion2016.1/...-Path写入库似乎是错误的
  3. 非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

您可以将项目的根目录放在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

答案 1 :(得分:0)

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