[英]How to add prebuilt static library in project using CMake?
Clion:如何在我的项目中添加或(使用)预构建的静态库?
您可能会问如何将您的项目链接到预先构建的静态库。 如果是这样,您可以通过调用target_link_libraries
来做到这一点。
假设您的项目名为myProj
和预建库myLib.lib
,您可以这样做:
target_link_libraries(myProj myLib)
我在完成这项工作时遇到了很大的困难,因为我对 CLion 和 CMake 完全陌生。
在我的场景中,我正在上课,要求我们在每个项目中使用课程库。
假设您有一个名为libClassLibrary.a
的库,请在项目根目录的CMakeLists.txt
中执行以下操作:
首先,找到图书馆的位置:
find_library(LIB_TO_INCLUDE ClassLibrary /path/to/your/library)
LIB_TO_INCLUDE
将包含库的位置(假设它被找到)。 请注意,如果您希望您的解决方案可移植到其他系统,则对路径进行硬编码可能会出现问题。 如果库可能存在于多个位置,您可以添加由空格分隔的其他搜索路径。 一个典型的例子是包含常见的安装位置,例如/usr/bin /usr/local/bin
等。
接下来,确保头文件(如果适用)包含在头搜索路径中:
find_path (LIB_INCLUDES ClassLibrary.h /path/to/header/files)
同样,如果标题可以在多个位置加载,则包括多个搜索路径。 如果头文件不止一个,则需要包含所有头文件。
现在,使用include_directories
命令包含目录:
include_directories(${LIB_INCLUDES})
以上将指示构建系统搜索包含在LIB_INCLUDES
或任何您决定调用它的任何目录中的所有目录。
最后,添加可执行文件,并使用target_link_libraries
命令链接libClassLibrary.a
。
add_executable(MyExecutable main.cpp)
target_link_libraries(MyExecutable ${LIB_TO_INCLUDE})
就这样。 您会注意到,在“项目管理器”窗口中的“外部库”>“头搜索路径”下,会出现包含头文件的目录。
PS - Ken Martin 和 Bill Hoffmann 合着的Mastering CMake一书是非常宝贵的资源。
我已将我的静态库test.a
与相关的头文件链接如下:
Project
├── main.cpp
├── CmakeLists.txt
├── libs
│ ├── includes
│ │ ├── *.h
│ ├── lib
│ │ ├── test.a
我已将此添加到./CMakeLists.txt
:
include_directories(${CMAKE_SOURCE_DIR}/libs/include)
find_library(Test_LIB test "${CMAKE_SOURCE_DIR}/libs/lib")
add_executable(TestApp main.cpp)
target_link_libraries(TestApp ${Test_LIB})
通过添加message(${Test_LIB})
,您可以打印出并检查路径。
您的问题与 CLion 无关,它是纯 CMake。 修改项目中的 CMakeLists.txt 并使用add_library
。 CMake 文档可能会有所帮助。
我误解了这个问题, target_link_library
可能是问题的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.