Факел CMake Ошибка в CMakeLists.txt: 10 (find_package) в C ++ - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь создать Eclipse C++ проект CMake, который вызывает torch/torch.h.Я запускаю cmake -G "Eclipse CDT4 - Unix Makefiles" ./, чтобы создать Eclipse проект, но я получаю эту ошибку:

-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Could not determine Eclipse version, assuming at least 3.6 (Helios). Adjust CMAKE_ECLIPSE_VERSION if this is wrong.
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:10 (find_package):
  By not providing "FindTorch.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Torch", but
  CMake did not find one.

  Could not find a package configuration file provided by "Torch" with any of
  the following names:

    TorchConfig.cmake
    torch-config.cmake

  Add the installation prefix of "Torch" to CMAKE_PREFIX_PATH or set
  "Torch_DIR" to a directory containing one of the above files.  If "Torch"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!

, в которой CMakeLists.txt находится в текущем каталоге, который имеет:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(test)        
find_package(Torch REQUIRED)    
add_executable(test test.cpp)
target_link_libraries(test "${TORCH_LIBRARIES}")
set_property(TARGET test PROPERTY CXX_STANDARD 11)

По-видимому, он не может найти TorchConfig.cmake и torch-config.cmake файлы;хотя у меня есть TorchConfig.cmake в /home/afshin/libtorch/share/cmake/Torch.Я добавил соответствующий путь в файл CMakeLists.txt, протестировав каждое из:

set(CMAKE_MODULE_PATH "/home/afshin/libtorch/share/cmake/Torch;${CMAKE_MODULE_PATH}")
set(CMAKE_MODULE_PATH "/home/afshin/libtorch/share/cmake;${CMAKE_MODULE_PATH}")
set(CMAKE_MODULE_PATH "/home/afshin/libtorch;${CMAKE_MODULE_PATH}")
set(Torch_DIR "/home/afshin/libtorch;${Torch_DIR}")
set(Torch_DIR "/home/afshin/libtorch/share/cmake/Torch;${Torch_DIR}")
set(Torch_DIR "/home/afshin/libtorch/share/cmake;${Torch_DIR}")
set(DCMAKE_PREFIX_PATH "/home/afshin/libtorch/share/cmake/Torch;${DCMAKE_PREFIX_PATH}")
set(DCMAKE_PREFIX_PATH "/home/afshin/libtorch/share/cmake;${DCMAKE_PREFIX_PATH}")
set(DCMAKE_PREFIX_PATH "/home/afshin/libtorch;${DCMAKE_PREFIX_PATH}")

Но это не помогло, и я все еще получаю ту же ошибку.Я ценю любую помощь или комментарии.

Я также попробовал cmake-gui, и я получаю ту же ошибку:

enter image description here

Спасибо, Афшин

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Мне удалось решить проблему, отредактировав CMakeLists.txt как:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(test_cmake)

set(CMAKE_PREFIX_PATH "/home/afshin/libtorch/share/cmake/Torch")
find_package(Torch REQUIRED)

add_executable(test_cmake ./src/test_cmake.cpp)
target_link_libraries(test_cmake "${TORCH_LIBRARIES}")
set_property(TARGET test_cmake PROPERTY CXX_STANDARD 11)

В качестве альтернативы, используя cmake-gui, я также смог решить проблему с помощью следующей настройки:

enter image description here

, нажав configure, а затем generate.Наконец, я импортировал этот проект в Eclipse, выбрав Makefile Project With Existing Code.Этот код скомпилирован и собран успешно.

0 голосов
/ 18 декабря 2018

Следующий измененный файл CMakeLists.txt работает без явно отсутствующего TorchConfig.cmake (также отсутствует в установке vcpkg здесь ).Я рекомендую Microsoft vcpkg для управления кроссплатформенными пакетами (библиотеками c ++) (использование здесь ).Но код не зависит от vcpkg: можно задать TORCH_BASE_PATH (или Torch_INCLUDE_DIR и Torch_LIBRARIES) для правильных путей.

#[[
    tested with:
    - CMake 3.13
    - Visual Studio Community Edition 15.9.4
        (CMake generator: "Visual Studio 15 2017 Win64")
    - torch-th library installed with vcpkg
        generic: vcpkg install torch-th
        for macOS: vcpkg install torch-th:x64-osx-dynamic
            x64-osx-dynamic triplet must be created: x64-osx + "set(VCPKG_LIBRARY_LINKAGE dynamic)"
        for Windows: vcpkg install torch-th:x64-windows

    - easy torch sample: https://apaszke.github.io/torch-internals.html
    ]]
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(test)

# cannot work without a "package configuration file" (TorchConfig.cmake)
#   so we replace it with find_path and find_library
#find_package(Torch REQUIRED)

#[[ 
    the environement variable VCPKG_ROOT used here, contains the path to vcpkg installation folder
        replace the two paths with your paths to TH installation

    usage: #include "TH/TH.h"
    ]]
set(TORCH_BASE_PATH "$ENV{VCPKG_ROOT}/installed/${VCPKG_TARGET_TRIPLET}")
message(STATUS TORCH_BASE_PATH=${TORCH_BASE_PATH})

set(Torch_INCLUDE_DIR "${TORCH_BASE_PATH}/include")
set(Torch_LIBRARIES "${TORCH_BASE_PATH}/lib")
# target_link_libraries is to be preferred
#link_directories(${Torch_LIBRARIES})
find_library(LIBRARY_TORCH TH HINTS ${Torch_LIBRARIES})
#[[ 
    even simpler
    if you use the vcpkg toolchain file "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"

        find_path(Torch_INCLUDE_DIR TH/TH.h)
        find_library(LIBRARY_TORCH TH)
    ]]

add_executable(test test.cpp)
target_include_directories(test PRIVATE ${Torch_INCLUDE_DIR})
target_link_libraries(test ${LIBRARY_TORCH})

set(CMAKE_CXX_STANDARD 11)
#set_property(TARGET test PROPERTY CXX_STANDARD 11)
...