簡體   English   中英

如何使CMake find_file在MSYS2上接受UNIX樣式的路徑?

[英]How to get CMake find_file to accept UNIX-style paths on MSYS2?

我在Windows 10和MSYS2上使用CMake 3.4.1(截至2015年12月25日的所有最新信息)。

當我使用CMake的find_file命令時,除非路徑為Windows風格,否則它將無法工作。 這對我來說是個問題,因為我正在嘗試使用findwxWidgets.cmake ,因此失敗了。

例如:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.0)
find_file(version_h version.h PATHS /mingw64/include/wx-3.0/wx)
message(STATUS "version_h: ${version_h}")

運行cmake吐出:

-- version_h: version_h-NOTFOUND

但這顯然在那里:

>>> file /mingw64/include/wx-3.0/wx/version.h
/mingw64/include/wx-3.0/wx/version.h: C source, ASCII text

我想知道這是否是錯誤,或者是否必須設置一些晦澀的標記才能使其正常工作。 如何獲取CMake的find_file來查找具有UNIX樣式路徑的文件?

MinGW-w64 cmake無法理解MSYS2路徑。 您可能會向CMake開發人員提出一個路徑轉換測試程序,但這相當繁瑣,我希望它會拒絕。 相反,必須逐案解決這些問題。 wx-config是一個shell腳本,它提供了MSYS2路徑。

這是當前發行的MSYS2 wxWidgets軟件包中的錯誤,它將在下一版本中修復。 要解決此問題,請在/ mingw64 / bin / wx-config或/ mingw32 / bin / wx-config中找到以下行:

prefix=${input_option_prefix-${this_prefix:-/mingw64}}

(或/ mingw32),然后添加:

if [ "x${MSYSTEM}" = "xMINGW32" ] || [ "x${MSYSTEM}" = "xMINGW64" ]; then
    prefix=$(cygpath -m ${prefix})
fi

但是請注意在升級時將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM