示例`CMakeLists.txt`

本文介绍了一个示例CMakeLists.txt文件的配置方法,包括设置CMake最低版本、项目名称、编译模式、检查C++11支持、设置交叉编译环境等关键步骤,并演示了如何指定编译器、添加头文件搜索路径、包含源文件、设置链接库及生成可执行文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例CMakeLists.txt

#1 设置cmake版本
cmake_minimum_required( VERSION 3.9 )
#2 设置项目名称
project(test)
# 1.3 编译模式
IF(NOT CMAKE_BUILD_TYPE)
    SET(CMAKE_BUILD_TYPE Release)
ENDIF()
# 1.4 Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_definitions(-DCOMPILEDWITHC11)
message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
add_definitions(-DCOMPILEDWITHC0X)
message(STATUS "Using flag -std=c++0x.")
else()
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
#4 设置交叉编译环境
if(0)
#4.1 设置目标平台系统
set(CMAKE_SYSTEM_NAME Linux)
#4.2 设置交叉编译库路径
set(CMAKE_FIND_ROOT_PATH
    /home/noch/tools/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/lib 
    /home/noch/tools/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/include
    /home/noch/tools/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)#只在交叉编译库路径中寻找
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
#4.3 设置交叉编译器
set(CMAKE_C_COMPILER /home/noch/tools/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER /home/noch/tools/gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-g++)
set(CMAKE_C_EXTENSIONS "-pipe -g -Wall -W -fPIE")
set(CMAKE_CXX_EXTENSIONS "-pipe -g -Wall -W -fPIE")
endif()
#5 包含头文件搜索路径
include_directories(${PROJECT_SOURCE_DIR})
#6 包含源文件
aux_source_directory(${PROJECT_SOURCE_DIR} SOURCE)
#7 设置链接库
set(LIBS pthread)
#7.1 设置库路径
# set(LINK_DIR $ENV{HOME}/lib64)
# link_directories(${LINK_DIR})
#8 将项目编译成可执行程序
add_executable(${PROJECT_NAME} ${SOURCE})
#8.1 将项目编译成.so文件(共享库)
# add_library(${PROJECT_NAME} SHARED ${SOURCE})
#8.2 将项目变成.a文件(静态库)
# add_library(${PROJECT_NAME} STATIC ${SOURCE})
#9 链接库
target_link_libraries(${PROJECT_NAME} ${LIBS})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值