zoukankan      html  css  js  c++  java
  • CMakeList.txt

    DIRECTORY

    ├─include
    │  └─libofd
    ├─lib
    │  └─googletest
    ├─src
    ├─tst
    └─.clang-format

    .clang-format

    BasedOnStyle: Google

    CMakeList.txt

    cmake_minimum_required(VERSION 3.5)

    project("ofd")

    include_directories(
            ./include
            /usr/local/include
    )

    link_directories(
            /usr/local/lib
    )

    set(CMAKE_CXX_STANDARD 11)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)

    set(LIBOFD_DEPENDENCY tinyxml2 zip)
    set(LIBOFD_INCLUDEDIR ${CMAKE_SOURCE_DIR}/include)

    if (CMAKE_HOST_WIN32)
        if (CMAKE_SIZEOF_VOID_P EQUAL 8)
            # win64
            include_directories(
                    D:/opt/include
                    D:/boost_1_75_0
            )
            link_directories(
                    D:/opt/lib
                    D:/boost_1_75_0/stage/lib
            )
        else ()
            # win32
            include_directories(
                    D:/opt_x86/include
                    D:/boost_1_75_0
            )
            link_directories(
                    D:/opt_x86/lib
                    D:/boost_1_75_0/stage/lib
            )
        endif ()

        set(CMAKE_CXX_FLAGS_RELEASE "/MT")
        set(CMAKE_CXX_FLAGS_DEBUG "/MTd /Zi /Od /DEBUG")
        add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
        add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
    else ()
        # set(CMAKE_CXX_FLAGS "-finput-charset='utf-8' -fexec-charset='utf-8'")
        # set(LIBOFD_DEPENDENCY ${LIBOFD_DEPENDENCY} stdc++fs)
        set(LIBOFD_DEPENDENCY ${LIBOFD_DEPENDENCY} boost_filesystem boost_date_time)
    endif ()

    add_subdirectory("src")
    add_subdirectory("tst")
    add_subdirectory("lib/googletest" EXCLUDE_FROM_ALL)

    src/CMakeList.txt

    set(LIBOFD_BINARY ${CMAKE_PROJECT_NAME})
    set(LIBOFD_SRC_DIR ${CMAKE_BINARY_DIR}/src)
    file(GLOB_RECURSE LIBOFD_SOURCES LIST_DIRECTORIES true *.h *.cpp)
    set(LIBOFD_SOURCES ${LIBOFD_SOURCES} "${LIBOFD_SRC_DIR}/config.h")

    # Version information
    set(LIBOFD_VERSION 0.1.0-alpha.1)
    set(LIBOFD_RC_VERSION 0,1,0,0)

    # Version add build metadata
    execute_process(
            COMMAND git rev-parse --short HEAD
            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
            OUTPUT_VARIABLE GIT_VERSION
            OUTPUT_STRIP_TRAILING_WHITESPACE
            ERROR_STRIP_TRAILING_WHITESPACE
    )

    if (GIT_VERSION)
        set(LIBOFD_VERSION ${LIBOFD_VERSION}+${GIT_VERSION})
        set(BUILD_METADATA YES)
    endif ()

    execute_process(
            COMMAND svn info --show-item url --no-newline
            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
            OUTPUT_VARIABLE SVN_URL
            OUTPUT_STRIP_TRAILING_WHITESPACE
            ERROR_STRIP_TRAILING_WHITESPACE
    )

    execute_process(
            COMMAND svn info ${SVN_URL} --show-item last-changed-revision --no-newline
            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
            OUTPUT_VARIABLE SVN_VERSION
            OUTPUT_STRIP_TRAILING_WHITESPACE
            ERROR_STRIP_TRAILING_WHITESPACE
    )

    if (SVN_VERSION)
        if (BUILD_METADATA)
            set(LIBOFD_VERSION ${LIBOFD_VERSION}.svn.r${SVN_VERSION})
        else ()
            set(LIBOFD_VERSION ${LIBOFD_VERSION}+svn.r${SVN_VERSION})
        endif ()
    endif ()

    string(TIMESTAMP LIBOFD_BUILD_DATE "%Y-%m-%d %H:%M:%S")
    message(STATUS "libofd version: ${LIBOFD_VERSION} built at ${LIBOFD_BUILD_DATE}")
    configure_file(
            config.h.in
            config.h
            @ONLY
    )
    include_directories(${LIBOFD_SRC_DIR})

    if (MSVC)
        configure_file(
                version.rc.in
                version.rc
                @ONLY
        )
        add_library(${LIBOFD_BINARY} SHARED ${LIBOFD_SOURCES} "${LIBOFD_SRC_DIR}/version.rc")
        set_target_properties(${LIBOFD_BINARY} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:MSVCRTD /NODEFAULTLIB:MSVCRT")
    else ()
        add_library(${LIBOFD_BINARY} SHARED ${LIBOFD_SOURCES})
    endif ()
    add_library(${LIBOFD_BINARY}_static STATIC ${LIBOFD_SOURCES})

    target_link_libraries(${LIBOFD_BINARY} ${LIBOFD_DEPENDENCY})
    target_include_directories(${LIBOFD_BINARY} PRIVATE "${LIBOFD_INCLUDEDIR}")
    set_target_properties(${LIBOFD_BINARY} PROPERTIES PUBLIC_HEADER "${LIBOFD_INCLUDEDIR}/libofd/libofd.h")

    include(GNUInstallDirs)
    install(TARGETS ofd ofd_static
            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
            PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libofd/
            )

    src/config.h.in

    #ifndef LIBOFD_SRC_CONFIG_H_IN_
    #define LIBOFD_SRC_CONFIG_H_IN_

    #cmakedefine LIBOFD_VERSION "@LIBOFD_VERSION@"
    #define LIBOFD_VERSION_W L"@LIBOFD_VERSION@"

    const char * LIBOFD_VER = "libofd version: @LIBOFD_VERSION@ built at @LIBOFD_BUILD_DATE@";

    #endif // LIBOFD_SRC_CONFIG_H_IN_

    src/version.rc.in

    1 VERSIONINFO
     FILEVERSION @LIBOFD_RC_VERSION@
     PRODUCTVERSION @LIBOFD_RC_VERSION@
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040904b0"
            BEGIN
                VALUE "FileDescription", ""
                VALUE "FileVersion", "@LIBOFD_VERSION@"
                VALUE "InternalName", "@CMAKE_PROJECT_NAME@"
                VALUE "LegalCopyright", "Copyright (C) 2021"
                VALUE "OriginalFilename", ""
                VALUE "ProductName", "@CMAKE_PROJECT_NAME@"
                VALUE "ProductVersion", "@LIBOFD_VERSION@"
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x409, 1200
        END
    END

     

    tst/CMakeList.txt

    set(BINARY ${CMAKE_PROJECT_NAME}_tst)

    file(GLOB_RECURSE TEST_SOURCES LIST_DIRECTORIES false *.h *.cpp)
    set(SOURCES ${TEST_SOURCES})

    add_executable(${BINARY} ${TEST_SOURCES})
    add_test(NAME ${BINARY} COMMAND ${BINARY})

    target_link_libraries(${BINARY} PUBLIC ${CMAKE_PROJECT_NAME}_static ${LIBOFD_DEPENDENCY} gtest)

    Get version information on linux

    strings libofd.so | grep libofd version
  • 相关阅读:
    Linux 打印可变参数日志
    am335x system upgrade kernel f-ram fm25l16b(十六)
    spi signal analyze using logic analyzer
    learning armbian steps(3) ----- armbian 文件系统定制思路
    learning armbian steps(2) ----- armbian 镜像编译
    learning armbian steps(1) ----- armbian 入门知识基础学习
    create rootfs.img using loop device
    learning docker steps(8) ----- docker network 初次体验
    learning docker steps(7) ----- docker registry 搭建
    learning docker steps(6) ----- docker 镜像加速
  • 原文地址:https://www.cnblogs.com/Bob-wei/p/14595197.html
Copyright © 2011-2022 走看看