cmake
设置cmake的C/C++编译标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)
add_library生成的默认是静态库还是动态库
https://blog.csdn.net/HandsomeHong/article/details/122401900
add_library()命令生成的默认库类型取决于第二个参数。如果第二个参数是STATIC,则生成静态库;如果第二个参数是SHARED,则生成动态库。如果没有指定第二个参数,则默认生成静态库。
cmake install
参考:https://blog.csdn.net/qq_38410730/article/details/102837401
Install功能一般是跟发布件相配合使用的,比如要发布rpm包、tar包等输出相关的可执行文件、lib、头文件等。
最常见步骤
mkdir build && cd build
cmake ..
make
make install
注意:cmake中的install()命令,只有在执行make install后才会生效。
install()命令最核心的就是干了这么件事:将各种lib、文件啥的"拷贝"到destination关键字定义的目录下。
定义cmake install时的相对地址前缀
https://blog.csdn.net/sinat_31608641/article/details/128473571
在执行cmake时:
cmake -DCMAKE_INSTALL_PREFIX=<你要的安装路径>
或者在cmake中
SET(CMAKE_INSTALL_PREFIX <你要安装的路径>)
install(DIRECTORY)
https://blog.csdn.net/sinat_31608641/article/details/128473571
注意上面红色字体说法不准确,经实测,如果想把整个abc
目录一并拷过去,需要保证DESTINATION目录下必须事先已存在,否则会报目录不存在的错误:
执行上面的install命令,本意是想把整个vpnserver目录拷贝至bin目录下:
但是提示"file INSTALL cannot make directory"的错误,也就说其实还是只能按文件拷贝,不能拷贝整个目录。
install时遇到错误"cmake install TARGETS given target which does not exist"
原因是我的Target对象是个类似boost::asio的静态库,它估计是个中间文件找不到。
如果以发布为目睹,作为静态库被一个可执行程序用到时,那么在链接阶段会被自动大包到到可执行二进制文件中了,这样就不需要再单独install了(install时也会报找不到)。
RPM简介与基本使用
https://www.cnblogs.com/harrymore/p/8665154.html