CMake find_path не находит путь в простом примере - PullRequest
0 голосов
/ 19 ноября 2018

Find_path просто не работает для меня вообще ни при каких обстоятельствах, поэтому я создал то, что мне показалось самым простым из возможных тестовых примеров.

Моя структура каталогов для исходного кода содержит

E:/Include/fred.h
E:/Src/fizzbuzz/CMakeLists.txt
E:/Src/fizzbuzz/fizzbuzz.cpp

CMakeLists.txt - это:

cmake_minimum_required(VERSION 3.12)
project (fizzbuzz)
find_path(
    GSLINCLUDE
    NAMES "fred.h"
    PATHS ../..   E:/
)
message(STATUS "GSLINCLUDE => ${GSLINCLUDE}")
add_executable(fizzbuzz fizzbuzz.cpp stdafx.h)

, который дает мне результат:

-- GSLINCLUDE => GSLINCLUDE-NOTFOUND
-- Configuring done
-- Generating done
-- Build files have been written to: E:/src/fizzbuzz

Предположительно, я делаю что-то простое и явно неправильное в каждом конкретном случае, но что будет работать вэтот простой пример с этой чрезвычайно простой структурой каталогов?

А если CMake просто не ожидает такой простой структуры каталогов, какая структура каталогов сделает его счастливым?

1 Ответ

0 голосов
/ 19 ноября 2018
Вкратце

, find_path не является рекурсивным, поэтому, если вы хотите, чтобы что-то было найдено в подпапке Включить , у вас есть 2 варианта:

Файл пути состояния должен находиться (примечание E:/Include вместо E:/):

find_path( GSLINCLUDE NAMES "fred.h" PATHS ../.. E:/Include )

другой вариант - использовать модификатор PATH_SUFFIXES:

find_path( GSLINCLUDE NAMES "fred.h" PATHS ../.. E:/ PATH_SUFFIXES Include )

Вконец, вот полная документация о find_path

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...