新手:VisualStudioCode:如何从多个cpp文件编译一个exec?

时间:2020-08-26 14:06:34

标签: c++ visual-studio-code googletest

如何设置Visual Sutio代码以从多个.cpp文件编译可执行文件? 我有以下目录结构:

src
test
build

在“ src”中,我有一些带有程序的.cpp文件,而在“ test”中,我有一些main.cpp文件,

#include <gtest/gtest.h>
int main(int argc, char *argv[]) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

和带有书面测试的几个.cpp文件。

如何编译它,以便将所有.cpp都包括在内(链接?)并执行测试?

现在我被困在编译main.cpp上,结果当然是

[==========] Running 0 tests from 0 test suites.
[==========] 0 tests from 0 test suites ran. (0 ms total)
[  PASSED  ] 0 tests.

我需要这很简单,并且出于Google测试培训的目的,从不处理make makefile,CMake等。

1 个答案:

答案 0 :(得分:0)

感谢所有提示。经过很长时间的休息(将我的知识更新为最新的C ++标准和实践/规则)后,我处于“再教育”过程。

我只是通过使用g ++命令和所有文件路径创建可执行文件来进行解决-正常工作,但是当涉及到我要练习的更复杂的示例时,这将非常不方便(即使仅用于培训) gtest,现在我需要重点关注。)

不幸的是,我尝试使make偶然发现了现在包含的头文件的问题-我不明白为什么在直接使用g ++命令时它会正常工作。你能给一些提示/提示吗?

这是makefile:

# Makefile
SOURCES=$(wildcard *.cpp */*.cpp */*/*.cpp)
DEPS=$(wildcard *.hpp */*.hpp */*/*.hpp)

main:
    g++ $(SOURCES) -lgtest -o $@ -pthread

目录树:

├── build
│
├── src
│   ├── Message.cpp
│   ├── Message.hpp
│   ├── SendMessage.cpp
│   ├── SendMessage.hpp
│   └── Transport
│       ├── AbstractTransport.cpp
│       ├── AbstractTransport.hpp
│       ├── EmailTransport.cpp
│       ├── EmailTransport.hpp
│       ├── SlackTransport.cpp
│       └── SlackTransport.hpp
├── tests
│   ├── Message
│   │   ├── EmailTransportTest.cpp
│   │   ├── Message.cpp
│   │   ├── SendMessage.cpp
│   │   └── SlackTransportTest.cpp
│   └── main.cpp
└──  makefile