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不希望这样简单的目录结构,那么哪种目录结构会让它高兴呢?
答案 0 :(得分:0)
简而言之,{
不是递归的,因此,如果您希望在 Include 子文件夹中找到某些内容,则有2个选项:
状态路径文件应驻留(请注意find_path
,而不是E:/Include
):
E:/
另一种选择是使用
find_path(
GSLINCLUDE
NAMES "fred.h"
PATHS ../.. E:/Include
)
修饰符:
PATH_SUFFIXES
最后,这是有关find_path
的完整文档