gpt4 book ai didi

linux - CMake find_path 适用于 Linux 但不适用于 MingW。我该如何解决?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:06 25 4
gpt4 key购买 nike

在 Linux 系统上:

执行以下命令:

mkdir test
cd test
mkdir mingw linux files
touch files/blah

添加以下 CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)
PROJECT(TEST LANGUAGES CXX)

find_path(BLAH_DIR
blah
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/files
)
message(STATUS "BLAH_DIR=${BLAH_DIR}")

在“mingw”文件夹中运行带有 mingw 工具链文件的 cmake,如下所示:

# the name of the target operating system
SET(CMAKE_SYSTEM_NAME Windows)

# which compilers to use for C and C++
SET(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
SET(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)

# here is the target environment located
SET(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32 )

# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
# programs in the host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

在“linux”文件夹中,只需运行 cmake。

对于 MingW,我们得到:

BLAH_DIR=BLAH_DIR-NOTFOUND

对于 Linux,我们得到:

BLAH_DIR=/Development/test/files

正如预期的那样。

为什么 find_path 对 MingW 不起作用?我应该提交关于 CMake 的错误报告吗?

最佳答案

感谢 Tsyvarev 提供的有用信息。

标题中“我该如何解决这个问题?”部分的答案就是在find_path命令中指定NO_CMAKE_FIND_ROOT_PATH和NO_DEFAULT_PATH。

关于linux - CMake find_path 适用于 Linux 但不适用于 MingW。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41718944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com