CMake 使用 find_library() 将自己的库添加到项目中
CMake Add own library to project using find_library()
我目前正在创建一组 类 应该用于
使用 CLion 的不同项目。我的问题是如何实现这个
functionality.
到目前为止,我调查了以下相关问题
这并没有真正解决我的问题:
- CMake link to external library
- Add external libraries to CMakeList.txt c++
- add_library(), find_library() 的 CMake 参考,我还不完全理解,因为我对 CMake 还很陌生
我创建了两个示例项目 "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(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 找到库但是
- 我无法访问图书馆的Class.h
- 写全/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 应该为您提供一个如何执行此操作的起点。
我目前正在创建一组 类 应该用于 使用 CLion 的不同项目。我的问题是如何实现这个 functionality.
到目前为止,我调查了以下相关问题 这并没有真正解决我的问题:
- CMake link to external library
- Add external libraries to CMakeList.txt c++
- add_library(), find_library() 的 CMake 参考,我还不完全理解,因为我对 CMake 还很陌生
我创建了两个示例项目 "TestLib" 和 "TestProj":
- TestLib
- src
- Class.h
- Class.cpp
- CMakeList.txt
- src
- TestProj
- main.cpp
- CMakeList.txt
"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 找到库但是
- 我无法访问图书馆的Class.h
- 写全/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 应该为您提供一个如何执行此操作的起点。