同时构建静态和动态库
//如果用这种方式,只会构建一个动态库,虽然静态库的后缀是.a
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ADD_LIBRARY(hello STATIC ${LIBHELLO_SRC})
//修改静态库的名字,这样是可以的,但是我们往往希望他们的名字是相同的,只是后缀不同
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})
SET_TARGET_PROPERTIES
这条指令可以用来设置输出的名称,对于动态库,还可以用来指定动态库版本和API版本
同时构建静态和动态库
SET(LIBHELLO_SRC hello.cpp) ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC}) //对hello_static的重名为hello SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello") //cmake在构建一个新的target时会尝试清理掉其他使用这个名字的库因为在构建libhello.so时,就会清理掉libhello.a SET_TARGET_PROPERTIES(hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) SET_TARGET_PROPERTIES(hello PROPERTIES OUTPUT_NAME "hello") SET_TARGET_PROPERTIES(hello PROPERTIES CLEAN_DIRECT_OUTPUT 1)
动态库的版本号
一般动态库都有一个版本号的关联
libhello.so.1.2 libhello.so ->libhello.so.1 libhello.so.1->libhello.so.1.2
CMakeLists.txt插入如下
SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1)
VERSION指代动态库版本,SOVERSION指代API版本
安装共享库和头文件
本例中我们将hello的共享库安装到<prefix>/lib目录
将hello.h安装到<prefix>/include/hello目录
//文件放在该目录下 INSTALL(FILES hello.h DESTINATION include/hello) //二进制,静态库动态库安装都用TARGETS //ARCHIVE 特指静态库,LIBRARY特指动态库,RUNTIME特指可执行目标二进制 INSTALL(TARGETS hello hello_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
指定cmake -D CMAKE_INSTALL_PREFIX=/usr ..
如何使用生成的hello.h,libhello.so,libhello.a
使用外部共享库和头文件
#include <hello.h> int main(){ a(); return 0; }
PROJECT(HELLO) ADD_SUBDIRECTORY(src bin)
接上回安装头文件之后
解决:make后头文件找不到的问题
include<helllo/hello.h>这样include是可以的
关键字:INCLUDE_DIRECTORIES这条指令可以用来向工程添加多个特定的头文件搜索路径,路径之间用空格分割
在CMakeLists.txt中加入头文件搜索路径
INCLUDE_DIRECTORIES(/usr/include/hello)
INCLUDE_DIRECTORIES(/usr/include/hello) ADD_EXECUTABLE(hello main.cpp) TARGET_LINK_LIBRARIES(hello libhello.so)
mv /usr/lib/libhello.so /usr/lib64
cd /进入根目录
mv 源文件路径 目标文件路径:移动
mv /home/a1/b1/c1/d1 /home/a1/b1/ 将d1移动到b1的文件夹下
mv /home/a1/b1/c1/d1 /tmp/d222移动并将d1改名为d222
mv /tmp/d222 /tmp/d333只改名
ctrl+shift++:屏幕放大
cat 文件 :查看全部内容
head -3 文件:查看前三行
tail
more 文件:翻页 空格翻篇回车换行
grep c /1.txt:过滤
ls 路径 >文件名:将路径下的目录信息放入文件中
gedit 文件名:打开文件
vim 文件名 i :wq yy复制,p粘贴 dd删除 5dd一下删除5行 u撤销 x删除一个字