### Generic Build Instructions ###
#### Setup ####
To build Google Test and your tests that use it, you need to tell your
build system where to find its headers and source files. The exact
way to do it depends on which build system you use, and is usually
straightforward.
#### Build ####
Suppose you put Google Test in directory `${GTEST_DIR}`. To build it,
create a library build target (or a project as called by Visual Studio
and Xcode) to compile
${GTEST_DIR}/src/gtest-all.cc
with `${GTEST_DIR}/include` in the system header search path and `${GTEST_DIR}`
in the normal header search path. Assuming a Linux-like system and gcc,
something like the following will do:
g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
-pthread -c ${GTEST_DIR}/src/gtest-all.cc
ar -rv libgtest.a gtest-all.o
(We need `-pthread` as Google Test uses threads.)
Next, you should compile your test source file with
`${GTEST_DIR}/include` in the system header search path, and link it
with gtest and any other necessary libraries:
g++ -isystem ${GTEST_DIR}/include -pthread path/to/your_test.cc libgtest.a \
-o your_test
As an example, the make/ directory contains a Makefile that you can
use to build Google Test on systems where GNU make is available
(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google
Test's own tests. Instead, it just builds the Google Test library and
a sample test. You can use it as a starting point for your own build
script.
If the default settings are correct for your environment, the
following commands should succeed:
cd ${GTEST_DIR}/make
make
./sample1_unittest
If you see errors, try to tweak the contents of `make/Makefile` to make
them go away. There are instructions in `make/Makefile` on how to do
it.
### Using CMake ###
Google Test comes with a CMake build script (
[CMakeLists.txt](CMakeLists.txt)) that can be used on a wide range of platforms ("C" stands for
cross-platform.). If you don't have CMake installed already, you can
download it for free from <http://www.cmake.org/>.
CMake works by generating native makefiles or build projects that can
be used in the compiler environment of your choice. You can either
build Google Test as a standalone project or it can be incorporated
into an existing CMake build for another project.
#### Standalone CMake Project ####
When building Google Test as a standalone project, the typical
workflow starts with:
mkdir mybuild # Create a directory to hold the build output.
cd mybuild
cmake ${GTEST_DIR} # Generate native build scripts.
If you want to build Google Test's samples, you should replace the
last command with
cmake -Dgtest_build_samples=ON ${GTEST_DIR}
If you are on a \*nix system, you should now see a Makefile in the
current directory. Just type 'make' to build gtest.
If you use Windows and have Visual Studio installed, a `gtest.sln` file
and several `.vcproj` files will be created. You can then build them
using Visual Studio.
On Mac OS X with Xcode installed, a `.xcodeproj` file will be generated.
#### Incorporating Into An Existing CMake Project ####
If you want to use gtest in a project which already uses CMake, then a
more robust and flexible approach is to build gtest as part of that
project directly. This is done by making the GoogleTest source code
available to the main build and adding it using CMake's
`add_subdirectory()` command. This has the significant advantage that
the same compiler and linker settings are used between gtest and the
rest of your project, so issues associated with using incompatible
libraries (eg debug/release), etc. are avoided. This is particularly
useful on Windows. Making GoogleTest's source code available to the
main build can be done a few different ways:
* Download the GoogleTest source code manually and place it at a
known location. This is the least flexible approach and can make
it more difficult to use with continuous integration systems, etc.
* Embed the GoogleTest source code as a direct copy in the main
project's source tree. This is often the simplest approach, but is
also the hardest to keep up to date. Some organizations may not
permit this method.
* Add GoogleTest as a git submodule or equivalent. This may not
always be possible or appropriate. Git submodules, for example,
have their own set of advantages and drawbacks.
* Use CMake to download GoogleTest as part of the build's configure
step. This is just a little more complex, but doesn't have the
limitations of the other methods.
The last of the above methods is implemented with a small piece
of CMake code in a separate file (e.g. `CMakeLists.txt.in`) which
is copied to the build area and then invoked as a sub-build
_during the CMake stage_. That directory is then pulled into the
main build with `add_subdirectory()`. For example:
New file `CMakeLists.txt.in`:
cmake_minimum_required(VERSION 2.8.2)
project(googletest-download NONE)
include(ExternalProject)
ExternalProject_Add(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG master
SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)
Existing build's `CMakeLists.txt`:
# Download and unpack googletest at configure time
configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
if(result)
message(FATAL_ERROR "CMake step for googletest failed: ${result}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
if(result)
message(FATAL_ERROR "Build step for googletest failed: ${result}")
endif()
# Prevent overriding the parent project's compiler/linker
# settings on Windows
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
# Add googletest directly to our build. This defines
# the gtest and gtest_main targets.
add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src
${CMAKE_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL)
# The gtest/gtest_main targets carry header search path
# dependencies automatically when using CMake 2.8.11 or
# later. Otherwise we have to add them here ourselves.
if (CMAKE_VERSION VERSION_LESS 2.8.11)
include_directories("${gtest_SOURCE_DIR}/include")
endif()
# Now simply link against gtest or gtest_main as needed. Eg
add_executable(example example.cpp)
target_link_libraries(example gtest_main)
add_test(NAME example_test COMMAND example)
Note that this approach requires CMake 2.8.2 or later due to
its use of the `ExternalProject_Add()` command. The above
technique is discussed in more detail in
[this separate article](http://crascit.com/2015/07/25/cmake-gtest/)
which also contains a link to a fully generalized implementation
of the technique.
##### Visual Studio Dynamic vs Static Runtimes #####
By default, new Visual Studio projects link the C runtimes dynamically
but Google Test links them statically.
This will generate an error that looks something like the following:
gtest.lib(gtest-all.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in main.obj
Google Test already has a CMake option for this: `gtest_force_shared_crt`
Enabling this option will make gtest link the runtimes dynamically too,
and match the project in which it is included.
### Legacy Build Scripts ###
Before settling on CMake, we have been providing hand-maintained build
projects/scripts f
没有合适的资源?快使用搜索试试~ 我知道了~
管理系统系列--DongmenDB是一个用于教学的关系数据库管理系统。DongmenDB is a didactic.zip
共339个文件
h:72个
cc:70个
c:62个
需积分: 5 0 下载量 151 浏览量
2024-02-25
23:11:20
上传
评论
收藏 1.09MB ZIP 举报
温馨提示
管理系统系列--DongmenDB是一个用于教学的关系数据库管理系统。DongmenDB is a didactic
资源推荐
资源详情
资源评论
收起资源包目录
管理系统系列--DongmenDB是一个用于教学的关系数据库管理系统。DongmenDB is a didactic.zip (339个子文件)
configure.ac 3KB
Makefile.am 11KB
refresh.bat 214B
build.bat 117B
clean.bat 91B
run_test.bat 66B
deldir.bat 46B
BUILD.bazel 9KB
shell.c 21KB
expression.c 18KB
tokenizer.c 17KB
sra.c 15KB
hashmap.c 14KB
physicalscan.c 12KB
recordfile.c 9KB
filemanager.c 8KB
column.c 7KB
metadatamanager.c 7KB
physical_scan_project.c 6KB
exp_01_03_select.c 6KB
ra.c 6KB
transaction.c 5KB
utils.c 5KB
physical_scan_table.c 5KB
physical_scan_join_nest_loop.c 5KB
physical_scan_select.c 5KB
buffermanager.c 5KB
create.c 5KB
exp_01_01_create_table.c 4KB
exp_01_02_insert.c 4KB
common.c 3KB
arraylist.c 2KB
insert.c 2KB
literal.c 2KB
parser.c 2KB
physicalplan.c 2KB
statement.c 2KB
exp_04_02_rights_manager.c 2KB
main.c 2KB
dongmendb.c 2KB
exp_05_02_condition_push_down.c 1KB
exp_03_01_integrity_check.c 1003B
exp_04_01_security_parser.c 908B
delete.c 818B
exp_07_05_update.c 783B
exp_02_02_field_exists.c 656B
exp_07_06_delete.c 646B
exp_02_01_table_exists.c 612B
row.c 555B
exp_01_04_update.c 510B
opstack.c 455B
exp_06_01_create_index.c 439B
securitymanager.c 430B
exp_01_05_delete.c 325B
exp_08_02_operate_select.c 147B
exp_05_03_condition_join_merge.c 144B
exp_06_02_index.c 140B
exp_08_01_index_select.c 135B
exp_05_01_condition_normal.c 133B
exp_09_01_lock_protocal.c 130B
exp_09_02_deadlock_check.c 91B
exp_10_01_buffer_replace.c 85B
integritymanager.c 79B
exp_06_03_index_update.c 76B
logmanager.c 73B
queryplan.c 72B
exp_07_01_project_groupby.c 70B
exp_07_03_join_index.c 69B
exp_07_04_join_hash.c 68B
exp_07_02_project_orderby.c 64B
gtest.cbproj 10KB
gtest_unittest.cbproj 8KB
gtest_main.cbproj 8KB
gtest_unittest.cc 242KB
gtest.cc 193KB
gtest_pred_impl_unittest.cc 76KB
gtest-printers_test.cc 56KB
gtest-death-test.cc 50KB
gtest-death-test_test.cc 44KB
gtest-port.cc 41KB
gtest-port_test.cc 39KB
gtest-param-test_test.cc 38KB
gtest_output_test_.cc 33KB
gtest-filepath_test.cc 22KB
gtest-printers.cc 15KB
gtest-filepath.cc 14KB
gtest-unittest-api_test.cc 13KB
gtest-typed-test_test.cc 12KB
gtest-listener_test.cc 10KB
gtest_stress_test.cc 9KB
gtest-tuple_test.cc 9KB
sample6_unittest.cc 9KB
gtest_catch_exceptions_test_.cc 9KB
gtest_repeat_test.cc 7KB
gtest-options_test.cc 7KB
gtest-test-part_test.cc 7KB
sample8_unittest.cc 7KB
sample5_unittest.cc 6KB
gtest_environment_test.cc 6KB
gtest_xml_output_unittest_.cc 6KB
共 339 条
- 1
- 2
- 3
- 4
资源评论
Kwan的解忧杂货铺
- 粉丝: 1w+
- 资源: 3640
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab 极限学习机在回归拟合及分类问题中的应用研究-对比实验源代码+详细教程
- ItemApplicationTest.java
- 个人发卡源码,发卡系统,二次元发卡系统,二次元发卡源码,发卡程序,动漫发卡,PHP发卡源码,异次元发卡
- 基于matlab 决策树分类器的应用研究-乳腺癌诊断源代码+详细教程
- 2008全国电子设计竞赛优秀作品报告doc文档.zip
- 课程智能组卷系统 JAVA+Spring+SpringMVC+MyBatis
- 基于matlab LVQ神经网络的预测-人脸朝向识别源代码+详细教程
- Controlnet敏神大佬IC-Light的AI智能打光 AI这次真的大地震了
- 医院电子病历管理系统 JAVA+Spring+SpringMVC+MyBatis
- 基于matlab LVQ神经网络的分类-乳腺肿瘤诊断源代码+详细教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功