惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Forbes - Security
Forbes - Security
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
Blog — PlanetScale
Blog — PlanetScale
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
U
Unit 42
I
InfoQ
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V
Visual Studio Blog
B
Blog RSS Feed
Vercel News
Vercel News
F
Fortinet All Blogs
Know Your Adversary
Know Your Adversary
T
Troy Hunt's Blog
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
Jina AI
Jina AI
小众软件
小众软件
T
Threatpost
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
The Hacker News
The Hacker News
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
Scott Helme
Scott Helme
B
Blog
腾讯CDC
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
S
Schneier on Security
N
News and Events Feed by Topic
Microsoft Security Blog
Microsoft Security Blog
K
Kaspersky official blog
G
Google Developers Blog
T
Tor Project blog
PCI Perspectives
PCI Perspectives
S
Secure Thoughts
Google Online Security Blog
Google Online Security Blog
Latest news
Latest news
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
罗磊的独立博客

博客园 - Bob-wei

Visual Studio 配置额外工具 Windows Terminal 等 Windows Terminal 配置文件 C# 7.2 中 In参数( in parameter )的性能比较 JavaScript 的 parseInt(x), parseFloat(x), Number(x), +x, ~~x, x>>>0, isNaN(x) 区别和结果 Windows Terminal 配置 git-bash,集成右键菜单,集成VSCode 恢复WIn10 2004的“要使用本计算机,用户必须输入用户名和密码”选项 plantuml server with math docker image aspnetcore singleton service in app.use [bash] 编写7zz函数替换7z压缩命令 Chrome 不跟随 macOS 系统主题改变深色模式 VSCode的浅色主题(Default Light+)侧边活动栏改为浅色 VSCode_Extensions C++ in VSCode 用户中心 - 博客园 C# 私有字段前缀 _ 的设置(VS2019, .editorconfig) dotnet 跨平台编译发布 重新调整动态vhdx占用的空间 通过git-bash一句话获得当前目录的全部csproj文件绝对路径 devdocs
CMakeList.txt
Bob-wei · 2021-03-30 · via 博客园 - Bob-wei

DIRECTORY

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

.clang-format

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", "\0"
            VALUE "FileVersion", "@LIBOFD_VERSION@\0"
            VALUE "InternalName", "@CMAKE_PROJECT_NAME@\0"
            VALUE "LegalCopyright", "Copyright (C) 2021\0"
            VALUE "OriginalFilename", "\0"
            VALUE "ProductName", "@CMAKE_PROJECT_NAME@\0"
            VALUE "ProductVersion", "@LIBOFD_VERSION@\0"
        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