【问题标题】:Cmake and pathsCmake 和路径
【发布时间】:2017-06-22 12:55:08
【问题描述】:

我正在尝试按照https://www.graphics.rwth-aachen.de:9000/OpenVolumeMesh/OpenVolumeMesh 中的说明制作 OpenVolumeMesh。我收到一个错误:

未找到 Google 测试框架。

我实际上已经下载了框架并按照以下说明进行操作:How to setup Google C++ Testing Framework (gtest) on Visual Studio 2005

一切顺利。

a)cmake 在哪个地方搜索 gtest? b) 是路径吗?因为我把google测试框架的文件夹复制粘贴到那里,cmake还是一无所获。

OpenVolumeMesh 中的 findgoogletesting.cmake 如下:

if(GTEST_INCLUDE_DIRS AND GTEST_LIBRARIES AND GTEST_MAIN_LIBRARIES)
  set(GTEST_FOUND true)
else(GTEST_INCLUDE_DIRS AND GTEST_LIBRARIES AND GTEST_MAIN_LIBRARIES)
  set(GTEST_PREFIX "" CACHE PATH "Installation prefix for Google Test")
  if(GTEST_PREFIX)
    find_path(_GTEST_INCLUDE_DIR "gtest/gtest.h"
      PATHS "${GTEST_PREFIX}/include"
      NO_DEFAULT_PATH)
    find_library(_GTEST_LIBRARY gtest
      PATHS "${GTEST_PREFIX}/lib"
      NO_DEFAULT_PATH)
    find_library(_GTEST_MAIN_LIBRARY gtest_main
      PATHS "${GTEST_PREFIX}/lib"
      NO_DEFAULT_PATH)

    if ( _GTEST_LIBRARY )
      get_filename_component(_GTEST_LIBRARY_DIR ${_GTEST_LIBRARY} PATH CACHE )
    endif()
  else(GTEST_PREFIX)
    find_path(_GTEST_INCLUDE_DIR "gtest/gtest.h"
      PATHS
      ~/sw/gtest-1.8.0/include
      ~/sw/gtest-1.7.0/include
      ~/sw/gtest/include     
      /ACG/acgdev/gcc-4.7-x86_64/gtest/include
      /opt/local/include
      /usr/local/include
      /usr/include
      "C:/libs/win32/gtest/include"
      NO_DEFAULT_PATH )
    find_library(_GTEST_LIBRARY gtest
      PATHS
      ~/sw/gtest-1.8.0/lib
      ~/sw/gtest-1.7.0/lib
      ~/sw/gtest/lib
      /ACG/acgdev/gcc-4.7-x86_64/gtest/lib
      /opt/local/lib
      /usr/local/lib
      /usr/lib
      "C:/libs/win32/gtest/lib"
      NO_DEFAULT_PATH )
    find_library(_GTEST_MAIN_LIBRARY gtest_main
      PATHS
      ~/sw/gtest-1.8.0/lib
      ~/sw/gtest-1.7.0/lib
      ~/sw/gtest/lib
      /ACG/acgdev/gcc-4.7-x86_64/gtest/lib
      /opt/local/lib
      /usr/local/lib
      /usr/lib
      "C:/libs/win32/gtest/lib"
      NO_DEFAULT_PATH )

     if ( _GTEST_LIBRARY )
        get_filename_component(_GTEST_LIBRARY_DIR ${_GTEST_LIBRARY} PATH CACHE )
     endif()

  endif(GTEST_PREFIX)
  if(_GTEST_INCLUDE_DIR AND _GTEST_LIBRARY AND _GTEST_MAIN_LIBRARY)
    set(GTEST_FOUND true)
    set(GTEST_INCLUDE_DIRS ${_GTEST_INCLUDE_DIR} CACHE PATH
      "Include directories for Google Test framework")

    if ( NOT WIN32 ) 
      set(GTEST_LIBRARIES ${_GTEST_LIBRARY} CACHE FILEPATH
        "Libraries to link for Google Test framework")
      set(GTEST_MAIN_LIBRARIES ${_GTEST_MAIN_LIBRARY} CACHE FILEPATH
        "Libraries to link for Google Test automatic main() definition")
    else()
      set(GTEST_LIBRARIES "optimized;gtest;debug;gtestd" CACHE FILEPATH
        "Libraries to link for Google Test framework")
      set(GTEST_MAIN_LIBRARIES "optimized;gtest_main;debug;gtest_maind" CACHE FILEPATH
        "Libraries to link for Google Test automatic main() definition")
    endif()

    # Macro required to use google test with vs2012
    if ( CMAKE_GENERATOR MATCHES "^Visual Studio 11.*"  )
       add_definitions(-D_VARIADIC_MAX=10)
    endif()


    set(GTEST_LIBRARY_DIR ${_GTEST_LIBRARY_DIR} CACHE FILEPATH
      "Library dir containing Google Test libraries")
    mark_as_advanced(GTEST_INCLUDE_DIRS GTEST_LIBRARIES GTEST_MAIN_LIBRARIES GTEST_LIBRARY_DIR )
    if(NOT GoogleTest_FIND_QUIETLY)
      message(STATUS "Found Google Test: ${GTEST_LIBRARIES}")
    endif(NOT GoogleTest_FIND_QUIETLY)
  else(_GTEST_INCLUDE_DIR AND _GTEST_LIBRARY AND _GTEST_MAIN_LIBRARY)
    if(GoogleTest_FIND_REQUIRED)
      message(FATAL_ERROR "Could not find the Google Test framework")
    endif(GoogleTest_FIND_REQUIRED)
  endif(_GTEST_INCLUDE_DIR AND _GTEST_LIBRARY AND _GTEST_MAIN_LIBRARY)
endif(GTEST_INCLUDE_DIRS AND GTEST_LIBRARIES AND GTEST_MAIN_LIBRARIES)

【问题讨论】:

    标签: visual-studio shell cmake googletest


    【解决方案1】:

    FindGoogleTest.cmake 已经告诉你答案:你应该运行 cmake 并添加以下标志:

    cmake -D GTEST_PREFIX=<path/to/gtest> </path/to/OpenVolumeMesh/sources>
    

    如果您使用的是 CMake Gui,则应单击“添加条目”并在此处指定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-21
      • 2011-04-18
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多