相关疑难解决方法(0)

gcc在哪里查找C和C++头文件?

在Unix系统上,gcc在哪里查找头文件?

我今天早上花了一点时间寻找一些系统头文件,所以我认为这将是很好的信息.

c gcc header

171
推荐指数
7
解决办法
10万
查看次数

编译时-pthread和-lpthread之间的差异

是什么区别gcc -pthreadgcc -lpthread它在编译多线程程序中使用?

multithreading gcc pthreads thread-safety compiler-flags

99
推荐指数
3
解决办法
5万
查看次数

CMake + GoogleTest

我刚刚下载了googletest,用CMake生成了它的makefile并构建了它.现在,我需要在我的测试项目中使用它.

有了CMake,我被告知不要直接指向gtest库(使用include _directorieslink_directories),而是使用find_package().

问题是,生成的gtest makefile没有安装目标.我无法理解find_package(GTest REQUIRED)如果没有某种安装可以工作.此外,将gtest文件夹作为子文件夹放在我的项目中是不可能的.

谢谢你的帮助.

cmake googletest

47
推荐指数
5
解决办法
3万
查看次数

如何在通过autotools构建的项目中使用Google Test?

似乎有一些答案是那种,有点理智,但我不知道如何执行.我还没有找到一个全面的答案.

第一个问题

Google Test不应该是已安装的库,它应该与项目一起构建.(请参阅常见问题解答.)据我所知,这意味着Google Test库是我单元测试的依赖项,应该在我第一次在项目中运行"make check"时构建.这应该在某个目录中构建Google Test库.我不知道该怎么做.它提到了一些被弃用的autotools脚本,我不确定他们在谈论什么,或者如何正确地指出我的构建.

第二个问题

假设构建成功,我如何编写使用我的本地编译版Google Test运行测试的测试?我假设我在test目录中放了一堆Makefile.am命令.但他们是什么?什么是使用Google Test的单元测试的例子?

c++ automated-tests unit-testing autotools googletest

20
推荐指数
1
解决办法
6373
查看次数

在Mac上构建Google测试时链接错误(命令行)

我目前正在尝试构建一些使用Google C++ Test框架的测试代码,但我不断收到错误消息

ld:警告:在/usr/local/lib/libgtest.dylib中,文件是为不支持的文件格式构建的,而不是被链接的体系结构(i386)

我试图让问题尽可能简单:

我有一个主要功能cmtest.cc

#include <gtest/gtest.h>

/** Main entry point */
int main(int argc, char**argv, char**envArg)
{
    testing::InitGoogleTest(&argc, argv);
    return(RUN_ALL_TESTS());
}
Run Code Online (Sandbox Code Playgroud)

真正基本的测试代码CrazyTest.cc

#include <gtest/gtest.h>
TEST(CrazyTest, one) {
    EXPECT_EQ(2, 2);
}
Run Code Online (Sandbox Code Playgroud)

我使用以下命令来构建gtest和我的测试代码.

g++ -o CrazyTest.o -c -Wall -Werror=non-virtual-dtor -pipe -std=c++98 -fno-rtti -fno-exceptions -fno-strict-aliasing -Wno-deprecated -g -arch i386 -arch x86_64 -mmacosx-version-min=10.5.4 -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_HAS_RTTI=0 -I/opt/gtest-1.6.0/include CrazyTest.cc

g++ -o cmtest.o -c -Wall -Werror=non-virtual-dtor -pipe -std=c++98 -fno-rtti -fno-exceptions -fno-strict-aliasing -Wno-deprecated -g -arch i386 -arch x86_64 -mmacosx-version-min=10.5.4 -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_HAS_RTTI=0 -I/opt/gtest-1.6.0/include cmtest.cc

g++ -o gtest-all.o …
Run Code Online (Sandbox Code Playgroud)

c++ testing linker build googletest

13
推荐指数
2
解决办法
8673
查看次数

除了XCode之外,如何在OS X上正确设置googleTest

如何设置gTest,以便我可以链接aganist库?我将在vim中编码,所以我只想安装库,不像XCode设置.目标是能够通过设置-lgtest为链接器标志来链接项目与库,并且可选地,如果我没有编写自己的测试主程序,则显示-lgtest_main标志.

c++ macos googletest

11
推荐指数
1
解决办法
1万
查看次数

与谷歌测试纠缠在一起

我无法启动并运行Google测试.我已经阅读了Google 提出的建议步骤,我也看过上一篇文章,并阅读了其他一些例子,但它并没有说清楚.

为了简单起见,我正在尝试使用Android测试中的建议示例,该示例可以从Android ndk - sample1中的目录获得:

// main.cpp

#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include "gtest/gtest.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    testing::InitGoogleTest(&argc, argv);

    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/factorial/main.qml"));
    viewer.showExpanded();

    return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)

// sample1_unittest.cpp

#include <limits.h>
#include "sample1.h"
#include "gtest/gtest.h"

// Tests factorial of 0.
TEST(FactorialTest, Zero) {
  EXPECT_EQ(1, Factorial(0));
}
Run Code Online (Sandbox Code Playgroud)

文件sample1.h,sample1.cpp也在项目中,其中包含阶乘函数.Google测试同样通知了项目文件--factial.pro:

INCLUDEPATH += 
/opt/android-studio/ndk/sources/third_party/googletest/googletest/include
Run Code Online (Sandbox Code Playgroud)

当我按[Build> Build Project"factorial"]时,会出现以下错误:

main.cpp:8: error: undefined reference to 'testing::InitGoogleTest(int*, char**)'
sample1_unittest.cpp:17: error: undefined reference to 'testing::Test::Test()'
Run Code Online (Sandbox Code Playgroud)

我正在使用Ubuntu,QtCreator,Android和C++.事实上,我已经花了3天时间嘲笑,但到目前为止并没有太多.因此,我在这里发帖,希望有些大师可能对此提出任何暗示.任何帮助将主要受到赞赏.

c++ android unit-testing qt-creator android-ndk

9
推荐指数
2
解决办法
1303
查看次数

谷歌测试缺少DSO

我正在学习谷歌测试.我下载了gtest,运行了命令./configure,make并以#结尾

$ sudo cp -a include/gtest /usr/include
$ sudo cp -a lib/.libs/* /usr/lib/
Run Code Online (Sandbox Code Playgroud)

我从这里得到了这一切.我试着运行这段代码

#include <gtest/gtest.h>
TEST(MathTest, TwoPlusTwoEqualsFour) {
    EXPECT_EQ(2 + 2, 4);
}

int main(int argc, char **argv) {
    ::testing::InitGoogleTest( &argc, argv );
    return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)

像这样

 $ export GTEST_HOME=~/usr/gtest
 $ export LD_LIBRARY_PATH=$GTEST_HOME/lib:$LD_LIBRARY_PATH
 $ g++ -I $GTEST_HOME/include -L $GTEST_HOME/lib -lgtest -lgtest_main -lpthread test.cpp
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误

/usr/bin/ld: /tmp/ccVTj3Rk.o: undefined reference to symbol '_ZN7testing8internal9EqFailureEPKcS2_RKSsS4_b'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libgtest.so: error adding symbols: DSO missing from command line
collect2: error: ld …
Run Code Online (Sandbox Code Playgroud)

c++ googletest

5
推荐指数
1
解决办法
1557
查看次数

Gtest:测试编译错误

我正在尝试测试我用googletest编写的电机控制库,但我不是要编译测试代码.测试位于名为test.cpp的文件中,如下所示:

#include <gtest/gtest.h>
#include "../motor.hpp"
TEST(constructorTest, contructorDefault)
{

}
Run Code Online (Sandbox Code Playgroud)

我将测试主函数放在另一个名为main.cpp的文件中.

#include <gtest/gtest.h>
#include "../motor.hpp"
int main(int argc, char* argv[])
{
    ::testing::InitGoogleTest(&argc,argv);
    RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)

要编译我已经完成了以下行:

g++ main.cpp test.cpp ../motor.cpp -o test
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

main.cpp:8:17: warning: ignoring return value of ‘int RUN_ALL_TESTS()’, declared with attribute warn_unused_result [-Wunused-result]
  RUN_ALL_TESTS();
                 ^
/tmp/ccZ5BaBH.o: In function `main':
main.cpp:(.text+0x1e): undefined reference to `testing::InitGoogleTest(int*, char**)'
/tmp/ccZ5BaBH.o: In function `RUN_ALL_TESTS()':
main.cpp:(.text._Z13RUN_ALL_TESTSv[_Z13RUN_ALL_TESTSv]+0x5): undefined reference to `testing::UnitTest::GetInstance()'
main.cpp:(.text._Z13RUN_ALL_TESTSv[_Z13RUN_ALL_TESTSv]+0xd): undefined reference to `testing::UnitTest::Run()'
/tmp/ccFuAMp3.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cpp:(.text+0x5c): undefined reference to `testing::internal::GetTestTypeId()' …
Run Code Online (Sandbox Code Playgroud)

c++ g++ googletest

5
推荐指数
1
解决办法
1万
查看次数

从 Ubuntu Bionic Beaver 源代码构建 LLVM 的步骤是什么?

并非所有 Kaleidscope 示例都可以编译。有些是这样的。

在 LLVM 的构建过程中,Cmake 抱怨“- 无法找到 LLVM FileCheck”

我的兴趣是使用 LLVM 开发一个玩具编译器 - 在 Ubuntu Bionic Beaver 笔记本电脑上,64 位。因此我需要从源代码编译 LLVM。文档说构建需要 Cmake、gcc/g++、clang 和 zlib。是的,确实如此。我发现这个列表并不完整。

sudo apt update
sudo apt upgrade
sudo apt install -y cmake gcc g++ python build-essential opam ocaml
sudo apt install -y checkinstall python-pygments python-yaml llvm

opam init /* and say yes to creating a profile
opam config env
opam install ctypes ctypes-foreign 
opam depext conf-llvm.6.0.0     /* and said Y to install
opam depext conf-m4.1           /* and …
Run Code Online (Sandbox Code Playgroud)

llvm

5
推荐指数
1
解决办法
5405
查看次数

如何在没有 root 访问权限的情况下在 Ubuntu 上安装 Google Test?

我正在尝试根据这个答案在没有 root 访问权限的 Ubuntu 上安装 Google Test ,因为我需要在工作中学习和使用它。

设法在我自己的用户文件夹中完成这些:

$ mkdir ~/temp
$ cd ~/temp
$ unzip gtest-1.7.0.zip 
$ cd gtest-1.7.0
$ mkdir mybuild
$ cd mybuild
$ cmake -DBUILD_SHARED_LIBS=ON -Dgtest_build_samples=ON -G"Unix Makefiles" ..
$ make
Run Code Online (Sandbox Code Playgroud)

似乎我已经在 /usr/src/gtest 中安装了 gtest 虽然我不想使用它,因为不是我安装了它,我不确定它的版本,也不确定它的可用性。未经许可甚至不能删除它。

仍然指令结束为:

$ cp -r ../include/gtest ~/usr/gtest/include/
$ cp lib*.so ~/usr/gtest/lib
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

linux installation ubuntu googletest

4
推荐指数
1
解决办法
5132
查看次数