配置、构建、打包、安装和测试g3log
使用g3log的示例项目
你可以在g3log_example_integration找到静态和动态构建的g3log项目集成示例
构建独立的试用版非常简单,如下所示:
git clone https://github.com/KjellKod/g3log
cd g3log
mkdir build
cd build
前提条件
假设您已经安装了出色的C++14编译器,您还需要以下工具从源代码构建g3log:
-
CMake (必需)
g3log可以使用CMake作为在Windows、Linux和OSX上配置、构建、安装、打包和测试的一站式解决方案。
-
Git (可选但推荐)
在搭建g3log时,你可以使用git从仓库的历史提交中查看软件版本,如果你不想这样,或者你没有git权限,你可以从GitHub Releases页面下载源文件,这样你就获取不到提交记录,你可以将下面这些作为CMake的传参传入进行构建,查阅issue获得更多信息
cmake -DVERSION=1.3.2 ..
配置选项
g3log提供以下CMake选项(和默认值):
$ cmake -LAH # List non-advanced cached variables. See `cmake --help` for more details.
...
// Fatal (fatal-crashes/contract) examples
ADD_FATAL_EXAMPLE:BOOL=ON
// g3log性能测试
ADD_G3LOG_BENCH_PERFORMANCE:BOOL=OFF
// g3log单元测试
ADD_G3LOG_UNIT_TEST:BOOL=OFF
// 使用DBUG日志级别而不是DEBUG。
// 默认情况下DEBUG是调试级别
CHANGE_G3LOG_DEBUG_TO_DBUG:BOOL=OFF
// Windows only: Use __FUNCSIG__ instead of the default __FUNCTION__
// to show LOG function location
// WARNING: using this in heavily templated code, like boost can expand
// the function name into massive size
WINDOWS_FUNCSIG:BOOL=OFF
// gcc/clang only: 使用__PRETTY_FUNCTION__替代默认的__FUNCTION__去展示LOG函数位置
// 警告:在类似boost的大量模板化的代码中使用它,会将函数名大小扩大
PRETTY_FUNCTION:BOOL=OFF
// 指定单个配置生成器上的生成类型
// 可能值为 empty, Debug, Release, RelWithDebInfo, MinSizeRel, …
CMAKE_BUILD_TYPE:STRING=
// 安装路径前缀,前缀在安装目录上。
// UNIX默认为/usr/local
// Windows默认为c:/Program Files/${PROJECT_NAME}
CMAKE_INSTALL_PREFIX:PATH=
// The prefix used in the built package.
// 在Linux上,如果没有设置此选项:
// 1) 如果指定了CMAKE_INSTALL_PREFIX,那么它将被
// 通过g3log设置CMAKE_INSTALL_PREFIX的值
// 2) 否则,它将被g3log设置为/usr/local
CPACK_PACKAGING_INSTALL_PREFIX:PATH=
// 在Visual Studio收到致命异常时启用断点,仅在__DEBUG模式下
DEBUG_BREAK_AT_FATAL_SIGNAL:BOOL=OFF
// Vectored exception / crash handling with improved stack trace
ENABLE_FATAL_SIGNALHANDLING:BOOL=ON
// Vectored exception / crash handling with improved stack trace
ENABLE_VECTORED_EXCEPTIONHANDLING:BOOL=ON
// iOS库版本
G3_IOS_LIB:BOOL=OFF
// 记录完整文件名
G3_LOG_FULL_FILENAME:BOOL=OFF
// 构建共享库
G3_SHARED_LIB:BOOL=ON
// 构建共享运行库MSVC
G3_SHARED_RUNTIME:BOOL=ON
// 打开/关闭日志级别
// 禁用的级别将不会将该级别的日志推送到接收器
// 默认情况下禁用动态日志记录
USE_DYNAMIC_LOGGING_LEVELS:BOOL=OFF
//在日志捕获期间使用动态内存为消息缓冲区
USE_G3_DYNAMIC_MAX_MESSAGE_SIZE:BOOL=OFF
...
有关其他配置选项上下文和注释,请参阅Options.cmake
如果你想让一切保持原样,那么你应该:
cmake ..
您也可以从命令行指定上面列出的一个或多个选项。例如,在Windows上:
cmake .. -G "Visual Studio 15 2017"
-DG3_SHARED_LIB=OFF
-DCMAKE_INSTALL_PREFIX=C:/g3log
-DADD_G3LOG_UNIT_TEST=ON
-DADD_FATAL_EXAMPLE=OFF
使用Visual Studio 2017将g3log构建为静态库,头文件和库将被安装到C:\g3log
,当从源代码安装时,请启用单元测试,但不要构建致命崩溃示例
Windows上的MinGW用户可能会发现他们应该使用不同的生成器:
cmake .. -G "MinGW Makefiles"
在Linux上通过make install
安装时,默认头文件和库将被安装到/usr/local
,你可以通过以下方式覆盖:
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
这样g3log将被安装到/usr
而不是/usr/local
Linux/OSX包维护人员可能会对CPACK_PACKAGING_INSTALL_PREFIX
感兴趣进行修改,例如:
cmake .. -DCPACK_PACKAGING_INSTALL_PREFIX=/usr/local
构建命令
配置完成后,您可以使用以下命令构建g3log:
# Suppose you are still in the `build` directory. I won't repeat it anymore!
cmake --build . --config Release
您也可以使用系统方式构建g3log
On Linux, OSX and MinGW:
make
On Windows:
msbuild g3log.sln /p:Configuration=Release
Windows用户还可以打开生成的Visual Studio构建它
安装
以CMake方式从源代码安装:
cmake --build . --target install
Linux用户还可以使用:
sudo make install
您也可以先创建一个包,然后用它安装g3log。见下一节。
打包
A CMake way:
cmake --build . --config Release --target package
or
cpack -C Release
如果在上一步中已经构建了整个库,也可以在Windows上生成一个ZIP包,在Linux上生成一个DEB包。
Linux users may also use a Linux way:
make package
如果你想使用不同的包生成器,你应该指定一个-G
选项中。
On Windows:
cpack -C Release -G NSIS;7Z
这将创建一个可安装的NSIS包和一个7z包。
附注: 要使用NSIS生成器,您应该首先安装NSIS
On Linux:
cpack -C Release -G TGZ
这将为您创建一个.tar.gz归档文件。
完成后,您可以将包文件安装或解压缩到目标计算机上。例如,在Debian或Ubuntu上:
sudo dpkg -i g3log-<version>-Linux.deb
这样会将g3log库安装到CPACK_PACKAGING_INSTALL_PREFIX
.
测试
默认情况下不会生成测试,要启用单元测试,您应该打开ADD_G3LOG_UNIT_TEST
.
假设构建过程已经完成,那么您可以使用以下命令运行测试:
ctest -C Release
or:
make test
Linux用户可以查看所有测试的详细日志输出::
cd build;
../scripts/runAllTests.sh
CMake 模块
G3 log附带了一个CMake模块。安装完成后,可以在${CMAKE_INSTALL_PREFIX}/lib/cmake/g3log
找到, 用户可以在基于CMake的项目中使用g3log:
find_package(g3log CONFIG REQUIRED)
target_link_libraries(main PRIVATE g3log)
为了确保CMake可以找到g3log,您还需要告诉CMake在哪里搜索它:
cmake .. -DCMAKE_PREFIX_PATH=<g3log's install prefix>
配置选项
构建选项在文件Options.cmake中定义了
构建选项被生成并保存到头文件中,这样就避免了在客户端源代码中设置define选项