cmake

cmake_minimum_required(VERSION 3.0.0)

if( CMAKE_COMPILER_IS_GNUCXX )

    #Get compiler version.

    execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion

                    OUTPUT_VARIABLE GNUCXX_VERSION )

    #-Werror=* was introduced -after- GCC 4.1.2

    if( GNUCXX_VERSION VERSION_GREATER 4.1.2 )

        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=strict-aliasing")

    endif()

endif( CMAKE_COMPILER_IS_GNUCXX )

include(CheckIncludeFileCXX)

include(CheckTypeSize)

include(CheckStructHasMember)

include(CheckCXXSymbolExists)

check_include_file_cxx(clocale HAVE_CLOCALE)

check_cxx_symbol_exists(localeconv clocale HAVE_LOCALECONV)

if(CMAKE_VERSION VERSION_LESS 3.0.0)

    # The "LANGUAGE CXX" parameter is not supported in CMake versions below 3,

    # so the C compiler and header has to be used.

    check_include_file(locale.h HAVE_LOCALE_H)

    set(CMAKE_EXTRA_INCLUDE_FILES locale.h)

    check_type_size("struct lconv" LCONV_SIZE)

    unset(CMAKE_EXTRA_INCLUDE_FILES)

    check_struct_has_member("struct lconv" decimal_point locale.h HAVE_DECIMAL_POINT)

else()

    set(CMAKE_EXTRA_INCLUDE_FILES clocale)

    check_type_size(lconv LCONV_SIZE LANGUAGE CXX)

    unset(CMAKE_EXTRA_INCLUDE_FILES)

    check_struct_has_member(lconv decimal_point clocale HAVE_DECIMAL_POINT LANGUAGE CXX)

endif()

project("gnssparser")

SET(MODULE_NAME gnssparser)

enable_testing()

if(DEBUG_FLAG)

    SET(DEBUG_FLAG "-g")

    SET(BUILD_CONFIGURATION_ "debug")

else()

    SET(DEBUG_FLAG "-DNDEBUG")

    SET(BUILD_CONFIGURATION "release")

endif()

set (C_CPP_FLAGS_ "${C_CPP_FLAGS_} -static-libstdc++ -std=c++14 -pthread -fPIC -Wl,--no-undefined -O3 ${DEBUG_FLAG}")

#set (C_CPP_FLAGS_ "${C_CPP_FLAGS_} -static-libstdc++ -std=c++14 -pthread -fPIC -Wl,--no-undefined -O3 -DUSE_COMMON_LIB ${DEBUG_FLAG} ${OS_FLAG} ${HCI_WARNINGS_SETTING}")

set (CMAKE_BUILD_TYPE "Debug")

set (CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")

set (CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")

set(CPACK_PROJECT_NAME ${PROJECT_NAME})

set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})

set(MYINCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/include)

set(PROJECTINCLUDE ${PROJECT_SOURCE_DIR}/include)

set(SYSINCLUDE /usr/include  /usr/local/lib)

include_directories(${SYSINCLUDE} ${PROJECTINCLUDE} ${MYINCLUDE})#添加头文件目录 -l

link_directories(${PROJECT_SOURCE_DIR}/lib ${CMAKE_CURRENT_SOURCE_DIR}/lib /usr/lib) #指定要链接的库文件的路径 -L

#source_group( "Public API" FILES ${PUBLIC_HEADERS} )

#add_library(xxx_lib ${PUBLIC_HEADERS} ${xxx_sources})

#set_target_properties( xxx_lib PROPERTIES VERSION ${xxx_VERSION} SOVERSION ${xxx_SOVERSION})

#set_target_properties( xxx_lib PROPERTIES OUTPUT_NAME xxxcpp

#                      DEBUG_OUTPUT_NAME xxxcpp${DEBUG_LIBNAME_SUFFIX} )

#set_target_properties( xxx_lib PROPERTIES POSITION_INDEPENDENT_CODE ON)

#add_library(${MODULE_NAME} SHARED  ${PROJECT_SOURCE_DIR})  #动态库,自定义,编译进代码

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)# 设置可执行文件的输出路径(EXCUTABLE_OUTPUT_PATH是全局变量)

set(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib")# 设置库文件的输出路径(LIBRARY_OUTPUT_PATH是全局变量)

#add_library(baz STATIC IMPORTED)  #静态库,自定义,编译进代码auto

#set_target_properties(baz PROPERTIES

    #IMPORTED_LOCATION_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/libbaz.a

    #IMPORTED_LOCATION_DEBUG  ${CMAKE_CURRENT_SOURCE_DIR}/libbazd.a)

#add_library(native-lib  SHARED  IMPORTED ) #动态库,自定义,auto编译进代码

#add_library(dbciterator SHARED  ${PROJECT_SOURCE_DIR}/source/dbciterator.c)  #静态库,自定义,编译进代码

#set_target_properties( native-lib PROPERTIES IMPORTED_LOCATION ${my_lib_path}/${ANDROID_ABI}/libnative-lib.so )#指名第三方库的绝对路径

#add_library(native2-lib SHARED src/main/cpp/native2-lib.cpp )

#target_link_libraries(native2-lib native-lib ${log-lib} )

SET(TUSLIBS  libcommu_c.so libprotobuf.so libprotomsg.so)

SET(SYSLIBS  pthread  librt.so)

SET(PRJLIBS  car_cloud  caster json nmeaparser serial)

add_subdirectory(car_cloud) #添加子目录

add_subdirectory(caster) #添加子目录

add_subdirectory(json) #添加子目录

add_subdirectory(nmeaparser) #添加子目录

add_subdirectory(serial) #添加子目录

aux_source_directory(${PROJECT_SOURCE_DIR}/src DIR_SRCS)

add_executable(${PROJECT_NAME} ${DIR_SRCS})

target_link_libraries(${MODULE_NAME} ${PRJLIBS} ${TUSLIBS} ${SYSLIBS})

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容