cmake 引用子目录的库
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake 引用子目录的库相关的知识,希望对你有一定的参考价值。
1. 目录结构
app
|——main.c
|——libso/
|——hello.c
|——hello.h
|——CMakeLists.txt
|——CmakeLists.txt
CmakeLists.txt
2. CMakeLists.txt
2.1 app文件夹的CMakeLists.txt
project(hello_jelly)
include_directories($PROJECT_SOURCE_DIR/../libso)
set(APP_SRC main.c)
add_executable($PROJECT_NAME main.c)
target_link_libraries($PROJECT_NAME helloso)
message($PROJECT_SOURCE_DIR)
2.2 libso文件夹的CMakeLists.tx
project(helloso)
set(LIB_SRC hello.c)
add_library($PROJECT_NAME SHARED $LIB_SRC)
2.3 外面那个和app在同一目录下的CMakeLists.txt
cmake_minimum_required (VERSION 3.2)
project(jelly_cmake)
add_subdirectory(./app)
add_subdirectory(./libso)
其表示我们要到./app和./libso文件夹下面去寻找Cmake文件然后进行编译
3. install
app目录修改CMakeLists.txt
install(TARGETS $PROJECT_NAME DESTINATION bin)
libso目录修改的CMakeLists.txt如下:只是在之前的基础上加了最后install一行
install(TARGETS $PROJECT_NAME DESTINATION ../lib)
3.1 install(TARGETS $PROJECT_NAME DESTINATION bin)
安装TARGERS hello_jelly这个可执行文件到$CMAKE_INSTALL_PREFIX/bin目录下面
- bin前面不能有/,否则会是绝对路径,它不再会去获取$CMAKE_INSTALL_PREFIX路径,
eg. 我的$CMAKE_INSTALL_PREFIX路径是/usr/local路径
可执行文件安装的路径是:/usr/local/bin/
so库文件的安装路径是:/usr/local/../lib/
以上是关于cmake 引用子目录的库的主要内容,如果未能解决你的问题,请参考以下文章