16

Clion:如何在我的项目中添加或(使用)预构建的静态库?

4

4 回答 4

18

您可能会问如何将您的项目链接到预构建的静态库。如果是这样,您可以通过调用target_link_libraries.

假设您的项目调用myProj和预建库myLib.lib,您可以这样做:

target_link_libraries(myProj myLib)
于 2015-04-10T15:10:28.717 回答
7

由于我对 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一书是非常宝贵的资源。

于 2018-08-16T01:43:06.117 回答
2

我已经将我的静态库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}),您可以打印并检查路径。

于 2020-01-12T10:44:50.363 回答
1

您的问题与 CLion 无关,它是纯 CMake。修改项目中的 CMakeLists.txt 并使用add_library. CMake 文档可能会有所帮助。

我误解了这个问题,target_link_library可能是问题的答案。

于 2015-04-04T13:28:19.133 回答