CMakeList汇总

cmake_minimum_required(VERSION 2.8.3) 
PROJECT (HELLO)   #工程名

SET( MAIN_LIST main.cpp )        #定义一个变量名
#SET(MAIN_LIST "${MAIN_LIST} -std=c++11")
#add_definitions(-std=c++11) # Use C++11

MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})#显示信息
MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})#显示信息


AUX_SOURCE_DIRECTORY(src DIR_SRCS) SET(PICAR_SERVER ${DIR_SRCS} ) ADD_EXECUTABLE(${PROJECT_NAME} ${PICAR_SERVER})
ADD_EXECUTABLE(hello ${MAIN_LIST} ) #hello 为编译后的目标文件名 ADD_EXECUTABLE(hello main.cpp) #hello 为编译后的目标文件名 ADD_SUBDIRECTORY ( source_dir [ binary_dir ] [ EXCLUDE_FROM_ALL ] ) #向当前工程添加存放源文件的子目录 并可以指定目标二进制存放的位置 EXCLUDE参数的含义是将这个 目录从编译过程中排除,比如example,可以就工程构建完成后,单独进来构建 INCLUDE_DIRECTORIES( [AFTER
|BEFORE] [SYSTEM] dir1 dir2 ... ) #向当前工程添加多个指定的头文件搜索路径,路径之间用空格分割 include_directories( ${catkin_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/sdk/include ${PROJECT_SOURCE_DIR}/sdk/src ) TARGET_LINK_LIBRARIES( target library1 library ... ) #添加共享库链接 可写成hello,也可写成libhello.so #使用了外部库,事先不知道头文件和链接库的位置 find_package(<name>) 会在模块路径中寻找name.cmake。 例:fing_package(BZip2) if(BZIP2_FOUND) include_directories( ${BZIP_INCLUDE_DIR} ) target_link_libraries( 工程名 ${BZIP2_LIBRARIES} ) endif(BZIP2_FOUND) find_library( libpaths libhello.so lib ) 找到自定义的库,不需要安装 libpaths为变量 libhello.so为要找的库, lib为路径 target_link_libraries( usehello ${libpaths} ) 将找到的库的变量链接到工程 make clean 可对构建结果进行清理 建立共享库 SET(LIBHELLO_SRC hello.c) ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ADD_LIBRARY( libname [ SHARED|STATIC|MODULE ] [EXCLUDE_FROM_ALL] source1 source2 ... ) #SHARED 动态库 STATIC静态库 MODULE不常用 INSTALL(TARGETS hello hello_static #TARGETS为二进制、动态库、静态库 LIBRARY DESTINATION lib #lib为相对位置,针对于DCMAKE_INSTALL_PREFIX=/usr 下 ARCHIVE DESTINATION lib) #可以使用make install命令将生成的libhello.so libhello_static.a 安装到/usr/lib下。 其中ARCHIVE是静态库的关键字,LIBRARY是动态库的关键字 INSTALL(FILES hello.h DESTINATION include/hello) #FILES普通文件安装, #可以将hello.h 安装到/usr/include/hello中 cmake -DCMAKE_INSTALL_PREFIX=/usr ..

 

转载于:https://www.cnblogs.com/penuel/p/11265627.html

### 解决在Ubuntu上安装CMake时可能出现的错误 当在Ubuntu系统中尝试安装CMake时,可能会遇到由于依赖项缺失或其他原因引起的错误。为了有效解决问题并成功安装CMake,可以遵循以下方法: #### 方法一:通过官方源更新安装 对于较低版本的CMake或存在依赖冲突的情况,推荐先清理旧版本再重新安装较新版本。 卸载现有低版本CMake: ```bash sudo apt-get autoremove cmake ``` 接着添加Kitware软件库以获取更稳定的CMake版本,并执行安装操作[^3]: ```bash wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - \ | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main'\ | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null sudo apt update && sudo apt install cmake ``` 验证安装是否成功及查看当前使用的CMake版本号: ```bash cmake --version ``` #### 方法二:处理特定依赖问题 如果遇到了类似于“Could not find OpenSSL”的提示,则表明缺少必要的开发库文件,在这种情况下应该预先安装这些依赖组件[^4]: ```bash sudo apt-get install g++ sudo apt-get update sudo apt-get install libssl-dev ``` 完成上述步骤后再继续按照常规方式下载、编译和安装CMake即可避免此类错误的发生。 #### 手动编译安装(适用于需要最新特性) 对于追求最前沿特性的开发者来说,可以从官方网站下载最新的源码包来进行本地编译安装: 1. 访问[CMake官网](https://cmake.org/download/)找到适合自己的压缩包链接; 2. 使用`wget`命令下载对应平台下的tarball到服务器端; 3. 对于已下载好的`.tar.gz`文件解压后进入目录运行配置脚本; 4. 编译完成后利用`make`工具链制作可执行程序; 5. 将生成的目标文件复制至系统的标准路径以便全局调用。 ```bash cd ~/Downloads/ wget https://github.com/Kitware/CMake/releases/download/v3.x.y/cmake-3.x.y.tar.gz tar xfz cmake-3.x.y.tar.gz cd cmake-3.x.y/ ./bootstrap make sudo make install ``` 以上就是针对不同场景下解决Ubuntu平台上安装CMake过程中可能碰到的各种问题的方法汇总
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值