gpt4 book ai didi

c++ - 在家庭系统上安装 gtest 时出错

转载 作者:行者123 更新时间:2023-11-30 04:42:16 30 4
gpt4 key购买 nike

我正在尝试以与我学校的计算机相同的方式设置我的家用计算机,以便我可以在这里完成我的作业,但我终究无法让 gtest 正常工作。我已经完成了推荐的安装过程,发现它需要“.so”库才能不抛出“pthread”未找到错误。

生成文件:

PROJECT_DIR = Electra
PROGRAM_TEST = testProject

CXX = g++
CXXFLAGS = -std=c++11 -g -fprofile-arcs -ftest-coverage

LINKFLAGS = -lgtest

SRC_DIR = src

TEST_DIR = test

SRC_INCLUDE = include
INCLUDE = -I ${SRC_INCLUDE}

GCOV = gcov
LCOV = lcov
COVERAGE_RESULTS = results.coverage
COVERAGE_DIR = docs/code/coverage

STATIC_ANALYSIS = cppcheck

STYLE_CHECK = cpplint.py

DOXY_DIR = docs/code

#Targets
#
#.PHONY: all
#all: $(PROGRAM_TEST) memcheck coverage docs static style

#Temporary all target. use ^^^ this one once docs and coverage required
.PHONY: all
all: $(PROGRAM_TEST) memcheck static style

%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@

.PHONY: clean
clean:
rm -rf *~ $(SRC)/*.o $(TEST_DIR)/output/*.dat \
*.gcov *.gcda *.gcno *.orig ???*/*.orig \
*.bak ???*/*.bak $(PROGRAM_GAME) \
???*/*~ ???*/???*/*~ $(COVERAGE_RESULTS) \
$(PROGRAM_TEST) $(MEMCHECK_RESULTS) $(COVERAGE_DIR) \
$(DOXY_DIR)/html obj bin

$(PROGRAM_TEST): $(TEST_DIR) $(SRC_DIR)
$(CXX) $(CXXFLAGS) -o $(PROGRAM_TEST) $(INCLUDE) \
$(TEST_DIR)/*.cpp $(SRC_DIR)/*.cpp $(LINKFLAGS)

tests: $(PROGRAM_TEST)
$(PROGRAM_TEST)

memcheck: $(PROGRAM_TEST)
valgrind --tool=memcheck --leak-check=yes $(PROGRAM_TEST)

fullmemcheck: $(PROGRAM_TEST)
valgrind --tool=memcheck --leak-check=full $(PROGRAM_TEST)

coverage: $(PROGRAM_TEST)
$(PROGRAM_TEST)
# Determine code coverage
$(LCOV) --capture --gcov-tool $(GCOV) --directory . --output-file $(COVERAGE_RESULTS)
# Only show code coverage for the source code files (not library files)
$(LCOV) --extract $(COVERAGE_RESULTS) */$(PROJECT_DIR)/$(SRC_DIR)/* -o $(COVERAGE_RESULTS)
#Generate the HTML reports
genhtml $(COVERAGE_RESULTS) --output-directory $(COVERAGE_DIR)
#Remove all of the generated files from gcov
rm -f *.gcda *.gcno

static: ${SRC_DIR} ${TEST_DIR}
${STATIC_ANALYSIS} --verbose --enable=all ${SRC_DIR} ${TEST_DIR} ${SRC_INCLUDE} --suppress=missingInclude

style: ${SRC_DIR} ${TEST_DIR} ${SRC_INCLUDE}
${STYLE_CHECK} $(SRC_INCLUDE)/* ${SRC_DIR}/* ${TEST_DIR}/*

#.PHONY: docs
#docs: ${SRC_INCLUDE}
# doxygen $(DOXY_DIR)/doxyfile

运行“make tests”结果如下

g++ -std=c++11 -g -fprofile-arcs -ftest-coverage -o testProject -I include \
test/*.cpp src/*.cpp -lgtest
testProject
make: testProject: Command not found
Makefile:53: recipe for target 'tests' failed
make: *** [tests] Error 127

知道为什么这行不通吗?或者如何开始尝试解决这个问题?这不是一个非常详细的错误。我不想更改 Makefile,因为它适用于我的学校系统,而且这是一个共享项目。

我的家庭系统运行的是 Windows 10,我使用 Ubuntu shell 来运行 makefile

最佳答案

在 POSIX shell 中,默认情况下不搜索当前工作目录。这是源自 POSIX 作为多用户系统的起源的安全措施:您不希望有人能够将 ls 之类的程序放到某个目录中,然后让毫无戒心的人运行它在该目录中键入 ls

显然,在您的学校系统中,有人已将当前工作目录 (.) 添加到您的 PATH 环境变量中,而在家里您没有添加它。

你的 makefile 是错误的,配方应该是:

tests: $(PROGRAM_TEST)
./$(PROGRAM_TEST)

强制运行当前工作目录中的程序,而不是依赖出现在 PATH 中的 cwd(或运行一些其他的 testProgram 实例)恰好在您的 PATH 上)。

这将适用于您所有的系统。

关于c++ - 在家庭系统上安装 gtest 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58824066/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com