cmake 安装 及 用法记录

ubuntu 下安装

su 

密码

apt-get install cmake

第一次是eshell 下安装的

提示unable to initialize frontend 

然后安装失败

切换到 terminal 下安装

这次ok

 

cmake --version

2.8.7的版本

 

可以借助cmake 自动生成makefile文件  自动生成windows vs 的工程

cmake 自身很简单,大大简化工程构建的工作。只要写了cmake文件,我就可以在linux下用,也可以在windows上用。

 

升级到 3.18.1

https://cmake.org/download/

wget https://cmake.org/files/v3.18/cmake-3.18.1-Linux-x86_64.tar.gz
tar -xvf cmake-3.18.1-Linux-x86_64.tar.gz
#如果有装cmake 就先卸载
apt-get autoremove cmake   
sudo mv cmake-3.18.1-Linux-x86_64/ /opt/cmake-3.18.1
sudo ln -sf /opt/cmake-3.18.1/bin/*  /usr/bin/

 

用法

设置输出目录

set(BIN_DIR ${PROJECT_SOURCE_DIR}/bin)
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN_DIR} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BIN_DIR} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BIN_DIR} )

 

设置包含目录

include_directories(${PROJECT_SOURCE_DIR}/3rd/)

 

添加编译路径

add_subdirectory(src)

 

加入目录下所有的文件

aux_source_directory("src/lib" lib_src)

 

生成程序

add_executable(hello-world ${ALL_SOURCES} ${lib_src})

 

加入库链接

target_link_libraries(jtrclient base mopcua ${SYS_LIBS})

生成库

add_library(mopcua ${interal_src} ${all_interface})

c++ 11

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")
elseif(COMPILER_SUPPORTS_CXX0X)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
    message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

 

各平台特殊添加不同命令


set(SYS_LIBS )
if(APPLE)
	list(APPEND SYS_LIBS -lm -lpthread)
    ADD_DEFINITIONS(
        -DMACOS -g -Wunused-variable -Wunused-parameter -Wunused-function -Wunused
        -Wno-deprecated -Wwrite-strings
    )
elseif(UNIX)
	list(APPEND SYS_LIBS -lm -lpthread)
    ADD_DEFINITIONS(
        -DUNIX -fPIC -Wunused-variable  -Wunused-function -Wunused
        -Wno-deprecated -Wwrite-strings 
    )
#    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-parameter")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-discarded-qualifiers")
elseif(WIN32)
	list(APPEND SYS_LIBS wsock32 ws2_32)
    ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -DHAVE_STRUCT_TIMESPEC "/wd4819" "/utf-8")
else()

endif()

添加宏并指定值

ADD_DEFINITIONS(-DUASDK_INCLUDE_DIRECTORY_WINDOWSX=1 
	-DUASDK_INCLUDE_LOCKS_CPP11=1 
	-DUASDK_INCLUDE_TIMERS_CPP11=1
	-DUASDK_INCLUDE_ATOMIC_CPP11=1)

 

附录

几个实际的CMakeLists.txt 参考

cmake_minimum_required(VERSION 3.5)

project(lorasim)

set(SYS_LIBS gwsim_base)
if(APPLE)
	list(APPEND SYS_LIBS -lm -lpthread)
    ADD_DEFINITIONS(
        -DMACOS -g -Wunused-variable -Wunused-parameter -Wunused-function -Wunused
        -Wno-deprecated -Wwrite-strings
    )
elseif(UNIX)
	list(APPEND SYS_LIBS -lm -lpthread)
    ADD_DEFINITIONS(
        -DUNIX -g -fPIC -Wunused-variable -Wunused-parameter -Wunused-function -Wunused
        -Wno-deprecated -Wwrite-strings
    )
else()
	list(APPEND SYS_LIBS wsock32 ws2_32)
    ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -DHAVE_STRUCT_TIMESPEC)
endif()


set(BIN_DIR ${PROJECT_SOURCE_DIR}/bin)
set(GTEST_DIR ${PROJECT_SOURCE_DIR}/3rd/googletest/googletest)

set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN_DIR} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BIN_DIR} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BIN_DIR} )

foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
    string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${BIN_DIR} )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${BIN_DIR} )
    set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${BIN_DIR} )
    message(STATUS CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG})
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )

include_directories(${PROJECT_SOURCE_DIR}/gateway/src)
include_directories(${PROJECT_SOURCE_DIR}/3rd)
include_directories(${PROJECT_SOURCE_DIR}/base)

add_subdirectory(3rd)
add_subdirectory(base)
add_subdirectory(gateway)
set(SRC main.c conf.c net.c net_udp.c up.c down.c gen_packet.c)

add_executable(gwsim ${SRC})
target_link_libraries(gwsim ${SYS_LIBS} gwsim_protocol gwsim_crypto)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值