2016-02-06 2 views
-1

Я хочу включить gtest в мой проект на C++. Я использую Clion как IDE, который должен работать. Некоторые тесты уже работают, но я не могу использовать какие-либо функции из B_RocChoice.h. В нем говорится, что функция не объявлена ​​в этой области.gtest setup cmake для его запуска

Может ли кто-нибудь сказать мне, что я делаю неправильно? Как мне изменить файлы CMakeLists.txt, которые он перерабатывает моими методами?

Это мой basic_tests.cpp, где будут написаны мои тестовые документы.

Это мой Directory.

Здесь самая внешняя CMakeLists.txt

cmake_minimum_required(VERSION 2.8) 
    project(cli) 

    find_package(OpenCV REQUIRED) 
    include_directories(${OpenCV_INCLUDE_DIRS}) 

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread") 

    set(SOURCE_FILES 
     include/A_WowbaggerChoice.h 
     include/AbstractChoice.h 
     include/B_RocChoice.h 
     include/C_CnnChoice.h 
     include/D_DetectorChoice.h 
     include/E_LearningChoice.h 
     include/Help.h 
     include/MyException.h 
     include/StartScreen.h 
     include/tinyxml.h 
     include/types.h 
     src/A_WowbaggerChoice.cpp 
     src/AbstractChoice.cpp 
     src/B_RocChoice.cpp 
     src/C_CnnChoice.cpp 
     src/D_DetectorChoice.cpp 
     src/E_LearningChoice.cpp 
     src/Help.cpp 
     src/main.cpp 
     src/MyException.cpp 
     src/StartScreen.cpp 
     tinyxml/tinystr.cpp 
     tinyxml/tinystr.h 
     tinyxml/tinyxml.cpp 
     tinyxml/tinyxml.h) 

    add_subdirectory(googletest) 

    add_executable(cli ${SOURCE_FILES}) 
    target_link_libraries(cli ${OpenCV_LIBS}) 

CMakeLists.txt для gtest.

cmake_minimum_required(VERSION 2.6.2) 

    project(googletest-distribution) 

    enable_testing() 

    option(BUILD_GTEST "Builds the googletest subproject" ON) 

    #Note that googlemock target already builds googletest 
    option(BUILD_GMOCK "Builds the googlemock subproject" OFF) 

    if(BUILD_GMOCK) 
     add_subdirectory(googlemock) 
    elseif(BUILD_GTEST) 
     add_subdirectory(googletest) 
    endif() 

    add_subdirectory(basic_tests) 

CMakeLists.txt для basic_tests

include_directories($(gtest_SOURCE_DIR}/include  
      ${getest_SOURCE_DIR})) 
    #include_directories(../../src/) 
    include_directories(../../include/) 

    add_executable(runBasicCli 
     basic_check.cpp) 

    target_link_libraries(runBasicCli gtest gtest_main) 
    #target_link_libraries(cli) 
+0

Вы можете исправить свои ссылки в первую очередь? – PhotometricStereo

+0

sry, как новый член Я могу отправить только 2 ссылки в одном сообщении – alexmina

+0

Можете ли вы уменьшить проблему до минимума? – usr1234567

ответ

0

Я предполагаю, что ваш компилятор жалуется, что не может найти заголовок B_RocChoices.h? Ваш вопрос, кажется, подразумевает, что ошибка компилятора заключается в том, что вы не находите функцию, но B_RocChoices - это заголовок, а не функция в вашем файле basic_tests.cpp.

Предполагая, что ваша проблема заключается в том, что компилятор не находит заголовок B_RocChoices.h, я надеюсь, что когда вы include_directories(../../include) вы желаете, чтобы сделать каталог, в котором B_RocChoices.h проживает часть заголовка поиска пути. Это относительный путь, поэтому он зависит от того, где выполняется компилятор, от того, какой путь он имеет в виду (например, если бы вы делали это из исходных построений). Попробуйте использовать CMAKE_SOURCE_DIR или CMAKE_CURRENT_SOURCE_DIR, чтобы определить путь однозначно. Например:

include_directories(${CMAKE_SOURCE_DIR}/include) 

Если вы используете CMake 2.8.11 или более поздней версии, я бы рекомендовал вам рассмотреть возможность использования target_include_directories() вместо и, вероятно, также прочитать на target_link_libraries(). Вместе они позволяют создавать пути поиска заголовков и связанные библиотеки, специфичные для целевого, а не глобального для всех целей. И, наконец, если вы предпочитаете, чтобы загрузить GoogleTest как часть вашего телосложения, а не встраивать их непосредственно в ваших исходных файлов проекта, вы можете найти ссылку полезным:

https://crascit.com/2015/07/25/cmake-gtest/

+0

спасибо, что помогли – alexmina

Смежные вопросы