Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

gtest.h file not found googletest xcode 7.0

I'm trying to setup google testing framework for my c++ project following this guide in xcode 7.0 I got to the last step Build and Go but after hours of searching online I can't get my test project to run. The compiler does not seem to find the headers it needs. main.cpp:9:10: 'gtest/gtest.h' file not found. The source is:

#include "gtest/gtest.h"

#include "calc.hpp"

int main(int argc, const char * argv[]) {

    return 0;
}

I also tried #include <gtest/gtest.h> With same result.

like image 723
Allan Ojala Avatar asked Sep 26 '15 12:09

Allan Ojala


2 Answers

Sometimes, Xcode cannot find header files in framework. You need additional steps to make it work.

  • In build settings, complete Framework Search Paths with the path to your framework, which is gtest.framework.

  • Add the framework path and to User Header Search Paths.

  • If Xcode cannot find "gtest/internal/gtest-port-arch.h", you can find it in source folder "googletest/googletest/include". Add it to User Header Search Paths.

After these steps, gtest should work in Xcode 7.0.

like image 185
Zhen Zhou Avatar answered Sep 28 '22 02:09

Zhen Zhou


Here is how I got it to work:

Steps:

  1. Download the source code $ svn checkout http://googletest.googlecode.com/svn/trunk/ googletest-read-only

  2. cd to the folder 'make' in the downloaded source code folder

  3. run $ make gtest.a gtest_main.a
  4. manually copy the two static library files to /usr/local/lib and copy the header file dir 'include/gtest' to /usr/local/include.
  5. Add Header Search Path (/usr/local/include) and Library Search Path (/usr/local/lib) to your xcode’s project setting
  6. Add linker flag agains gtest. In target setting under "Other Linker Flags". Add /usr/local/lib/gtest.a

    // main.cpp
    #include <stdio.h>
    #include "gtest/gtest.h"
    #include "calc.hpp" // has function int addition(int,int);
    TEST(MyFirstTest, TestAddition) {
            EXPECT_EQ(3, addition(1, 2));
    }
    GTEST_API_ int main(int argc, char **argv) {
            printf("Running main() from gtest_main.cc\n");
            testing::InitGoogleTest(&argc, argv);
            return RUN_ALL_TESTS();
    }
    
like image 34
Allan Ojala Avatar answered Sep 28 '22 00:09

Allan Ojala