在Unix系统上,gcc在哪里查找头文件?
我今天早上花了一点时间寻找一些系统头文件,所以我认为这将是很好的信息.
是什么区别gcc -pthread和gcc -lpthread它在编译多线程程序中使用?
我刚刚下载了googletest,用CMake生成了它的makefile并构建了它.现在,我需要在我的测试项目中使用它.
有了CMake,我被告知不要直接指向gtest库(使用include _directories或link_directories),而是使用find_package().
问题是,生成的gtest makefile没有安装目标.我无法理解find_package(GTest REQUIRED)如果没有某种安装可以工作.此外,将gtest文件夹作为子文件夹放在我的项目中是不可能的.
谢谢你的帮助.
似乎有一些答案是那种,有点理智,但我不知道如何执行.我还没有找到一个全面的答案.
Google Test不应该是已安装的库,它应该与项目一起构建.(请参阅常见问题解答.)据我所知,这意味着Google Test库是我单元测试的依赖项,应该在我第一次在项目中运行"make check"时构建.这应该在某个目录中构建Google Test库.我不知道该怎么做.它提到了一些被弃用的autotools脚本,我不确定他们在谈论什么,或者如何正确地指出我的构建.
假设构建成功,我如何编写使用我的本地编译版Google Test运行测试的测试?我假设我在test目录中放了一堆Makefile.am命令.但他们是什么?什么是使用Google Test的单元测试的例子?
我目前正在尝试构建一些使用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());
}
真正基本的测试代码CrazyTest.cc
#include <gtest/gtest.h>
TEST(CrazyTest, one) {
    EXPECT_EQ(2, 2);
}
我使用以下命令来构建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 …如何设置gTest,以便我可以链接aganist库?我将在vim中编码,所以我只想安装库,不像XCode设置.目标是能够通过设置-lgtest为链接器标志来链接项目与库,并且可选地,如果我没有编写自己的测试主程序,则显示-lgtest_main标志.
我无法启动并运行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();
}
// 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));
}
文件sample1.h,sample1.cpp也在项目中,其中包含阶乘函数.Google测试同样通知了项目文件--factial.pro:
INCLUDEPATH += 
/opt/android-studio/ndk/sources/third_party/googletest/googletest/include
当我按[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()'
我正在使用Ubuntu,QtCreator,Android和C++.事实上,我已经花了3天时间嘲笑,但到目前为止并没有太多.因此,我在这里发帖,希望有些大师可能对此提出任何暗示.任何帮助将主要受到赞赏.
我正在学习谷歌测试.我下载了gtest,运行了命令./configure,make并以#结尾
$ sudo cp -a include/gtest /usr/include
$ sudo cp -a lib/.libs/* /usr/lib/
我从这里得到了这一切.我试着运行这段代码
#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();
}
像这样
 $ 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
但我收到一个错误
/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 …我正在尝试测试我用googletest编写的电机控制库,但我不是要编译测试代码.测试位于名为test.cpp的文件中,如下所示:
#include <gtest/gtest.h>
#include "../motor.hpp"
TEST(constructorTest, contructorDefault)
{
}
我将测试主函数放在另一个名为main.cpp的文件中.
#include <gtest/gtest.h>
#include "../motor.hpp"
int main(int argc, char* argv[])
{
    ::testing::InitGoogleTest(&argc,argv);
    RUN_ALL_TESTS();
}
要编译我已经完成了以下行:
g++ main.cpp test.cpp ../motor.cpp -o test
我得到的结果是:
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()' …并非所有 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 …我正在尝试根据这个答案在没有 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
似乎我已经在 /usr/src/gtest 中安装了 gtest 虽然我不想使用它,因为不是我安装了它,我不确定它的版本,也不确定它的可用性。未经许可甚至不能删除它。
仍然指令结束为:
$ cp -r ../include/gtest ~/usr/gtest/include/
$ cp lib*.so ~/usr/gtest/lib
我在这里缺少什么?
googletest ×7
c++ ×6
gcc ×2
unit-testing ×2
android ×1
android-ndk ×1
autotools ×1
build ×1
c ×1
cmake ×1
g++ ×1
header ×1
installation ×1
linker ×1
linux ×1
llvm ×1
macos ×1
pthreads ×1
qt-creator ×1
testing ×1
ubuntu ×1