我能够构建googletest并使用它来运行单元测试。
我在<<p> strong>unit_test.cpp
makefile,我需要检查是否存在googletest
填词..googletest
且仅当他们不存在,我想运行cmakegoogletest
。运行cmake和make,即使它们已经构建,也需要30秒,所以我只想在实际需要的时候运行cmake和make。
我在<<p> strong> makefile for我的
unit_test.cpp
,我可以列出什么作为依赖关系,以便构建googletest
只在实际需要时发生?"蛮力";方法是列出googletestbuildliblibgtest.a
但这将打破如果,不过不太可能,googletest
改变输出的名字从lib
libs
。
如果您担心build目录下的文件布局可能发生变化,可以使用cmake --install
命令直接指定头文件和库的子文件夹,然后再执行cmake configure步骤。CMAKE_INSTALL_PREFIX
变量允许指定安装目录,CMAKE_INSTALL_INCLUDEDIR
、CMAKE_INSTALL_LIBDIR
变量允许指定头文件和库的子文件夹,相应的:
GOOGLETEST_SRC_DIR := googletest
GOOGLETEST_BUILD_CACHE_DIR := googletest_build_cache
GOOGLETEST_SDK_DIR := googletest_sdk
GOOGLETEST_SDK_INCLUDE_DIR := include
GOOGLETEST_SDK_LIB_DIR := lib
GOOGLETEST_LIB := gtest
GOOGLETEST_MAIN_LIB := $(GOOGLETEST_LIB)_main
UT := ut
UT_SRC := ut.cpp
default_target: $(UT)
$(GOOGLETEST_BUILD_CACHE_DIR) :
cmake
-DCMAKE_INSTALL_PREFIX=$(shell pwd)/$(GOOGLETEST_SDK_DIR)
-DCMAKE_INSTALL_LIBDIR=$(GOOGLETEST_SDK_LIB_DIR)
-DCMAKE_INSTALL_INCLUDEDIR=$(GOOGLETEST_SDK_INCLUDE_DIR)
-B $(GOOGLETEST_BUILD_CACHE_DIR) -S $(GOOGLETEST_SRC_DIR)
cmake --build $(GOOGLETEST_BUILD_CACHE_DIR) --parallel
touch $(GOOGLETEST_BUILD_CACHE_DIR)
$(GOOGLETEST_SDK_DIR): $(GOOGLETEST_BUILD_CACHE_DIR)
cmake --install $(GOOGLETEST_BUILD_CACHE_DIR)
touch $(GOOGLETEST_SDK_DIR)
$(UT): $(UT_SRC) $(GOOGLETEST_SDK_DIR)
g++ $(UT_SRC) -o $(UT)
-I$(GOOGLETEST_SDK_DIR)/$(GOOGLETEST_SDK_INCLUDE_DIR)
-L$(GOOGLETEST_SDK_DIR)/$(GOOGLETEST_SDK_LIB_DIR)
-l$(GOOGLETEST_MAIN_LIB) -l$(GOOGLETEST_LIB)
clean:
rm -f $(UT)
rm -fR $(GOOGLETEST_BUILD_CACHE_DIR) $(GOOGLETEST_SDK_DIR)