CLion:如何在项目中添加(或使用)预构建的静态库?
hmmo2u0o1#
如果您询问如何将项目链接到预构建的静态库,您可以通过调用target_link_libraries来完成。假设您的项目名为myProj,预构建库为myLib.lib,您可以这样做:
target_link_libraries
myProj
myLib.lib
target_link_libraries(myProj myLib)
ctehm74n2#
我有很大的困难,使这项工作,因为我是完全新的CLion和CMake。在我的场景中,我正在上一门课,要求我们在每个项目中使用课程库。假设您有一个名为libClassLibrary.a的库,请在项目根目录下的CMakeLists.txt中执行以下操作:首先,找到图书馆的位置:
libClassLibrary.a
CMakeLists.txt
find_library(LIB_TO_INCLUDE ClassLibrary /path/to/your/library)
LIB_TO_INCLUDE将包含库的位置(假设找到了它)。请注意,如果您希望解决方案可移植到其他系统,则对路径进行硬编码可能会有问题。如果库可能存在于多个位置,则可以添加由空格分隔的其他搜索路径。典型的示例是包括常见的安装位置,如/usr/bin /usr/local/bin等。接下来,确保头文件(如果适用)包含在头搜索路径中:
LIB_TO_INCLUDE
/usr/bin /usr/local/bin
find_path (LIB_INCLUDES ClassLibrary.h /path/to/header/files)
同样,如果头文件可以被加载到多个位置,那么要包含多个搜索路径。如果有多个头文件,那么你需要包含所有的头文件。现在,使用include_directories命令包含目录:
include_directories
include_directories(${LIB_INCLUDES})
以上代码将指示构建系统搜索LIB_INCLUDES或您决定的任何名称中包含的所有目录。最后,添加可执行文件并使用target_link_libraries命令链接libClassLibrary.a。
LIB_INCLUDES
add_executable(MyExecutable main.cpp) target_link_libraries(MyExecutable ${LIB_TO_INCLUDE})
你会注意到,在项目管理器窗口的“External Libraries”〉“Header Search Paths”下,包含你的头文件的目录出现了。PS -Ken Martin和Bill Hoffmann的《Mastering CMake》一书是非常宝贵的资源。
cvxl0en23#
我已经将我的静态库test.a与相关的头文件链接如下:
test.a
Project ├── main.cpp ├── CmakeLists.txt ├── libs │ ├── includes │ │ ├── *.h │ ├── lib │ │ ├── test.a
在./CMakeLists.txt中添加以下内容:
./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}),您可以打印出并检查路径。
message(${Test_LIB})
pxiryf3j4#
您的问题与CLion无关;它是纯CMake。从你的项目中修改CMakeLists.txt并使用add_library。CMake documentation可能会有帮助。我误解了这个问题target_link_library可能是这个问题的答案。
add_library
target_link_library
4条答案
按热度按时间hmmo2u0o1#
如果您询问如何将项目链接到预构建的静态库,您可以通过调用
target_link_libraries
来完成。假设您的项目名为
myProj
,预构建库为myLib.lib
,您可以这样做:ctehm74n2#
我有很大的困难,使这项工作,因为我是完全新的CLion和CMake。
在我的场景中,我正在上一门课,要求我们在每个项目中使用课程库。
假设您有一个名为
libClassLibrary.a
的库,请在项目根目录下的CMakeLists.txt
中执行以下操作:首先,找到图书馆的位置:
LIB_TO_INCLUDE
将包含库的位置(假设找到了它)。请注意,如果您希望解决方案可移植到其他系统,则对路径进行硬编码可能会有问题。如果库可能存在于多个位置,则可以添加由空格分隔的其他搜索路径。典型的示例是包括常见的安装位置,如/usr/bin /usr/local/bin
等。接下来,确保头文件(如果适用)包含在头搜索路径中:
同样,如果头文件可以被加载到多个位置,那么要包含多个搜索路径。如果有多个头文件,那么你需要包含所有的头文件。
现在,使用
include_directories
命令包含目录:以上代码将指示构建系统搜索
LIB_INCLUDES
或您决定的任何名称中包含的所有目录。最后,添加可执行文件并使用
target_link_libraries
命令链接libClassLibrary.a
。你会注意到,在项目管理器窗口的“External Libraries”〉“Header Search Paths”下,包含你的头文件的目录出现了。
PS -Ken Martin和Bill Hoffmann的《Mastering CMake》一书是非常宝贵的资源。
cvxl0en23#
我已经将我的静态库
test.a
与相关的头文件链接如下:在
./CMakeLists.txt
中添加以下内容:通过添加
message(${Test_LIB})
,您可以打印出并检查路径。pxiryf3j4#
您的问题与CLion无关;它是纯CMake。从你的项目中修改CMakeLists.txt并使用
add_library
。CMake documentation可能会有帮助。我误解了这个问题
target_link_library
可能是这个问题的答案。