CMake 查找具有不同版本的多个包的特定包(NCurses)
CMake find specific package of multiple packages with different versions (NCurses)
我目前有一个 CMake 文件,用于查找一个库 (NCurses) 并将其链接到另一个库
...
set(CURSES_NEED_NCURSES TRUE)
find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})
add_library(myLibrary STATIC ${sources})
target_link_libraries(myLibrary ${CURSES_LIBRARIES})
target_compile_options(myLibrary PUBLIC -std=c++20 -Wall -Wconversion)
...
这工作正常,但不幸的是,它启动的版本与我需要的不同(5.7 而不是 6.1)
#include <ncurses.h>
#include <iostream>
int main()
{
std::cout << "VERSION: " << NCURSES_VERSION;
}
输出:VERSION: 5.7
我确实在以下位置安装了所需的软件包:/usr/local/ncurses/6_1
。
但是日志似乎说它是从不同的位置提取它的:Found Curses: /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/lib/libncurses.tbd
如何指定我想使用其中的哪些?
好的,我已经弄清楚了,对于可能遇到这个问题的任何其他人。
首先我从这里安装了最新版本的 ncurses (6.3):https://invisible-island.net/ncurses/#downloads-h2
(我下载了 gzipped tar)
然后我检查并删除了我能找到的 usr/local 中所有对 ncurses 的引用。
然后我提取了 tar,并进入了新目录。
我 运行 只是目录中的普通 ./configure
(没有标志)。
完成后,我运行make
然后我 运行 make install
,删除符号链接以停止冲突后,make install 能够 运行 正确。
确保 CMake 变量 CURSES_NEED_NCURSES 在找到包之前设置为 TRUE:
set(CURSES_NEED_NCURSES TRUE)
find_package(Curses REQUIRED)
它会完美运行:)
我目前有一个 CMake 文件,用于查找一个库 (NCurses) 并将其链接到另一个库
...
set(CURSES_NEED_NCURSES TRUE)
find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})
add_library(myLibrary STATIC ${sources})
target_link_libraries(myLibrary ${CURSES_LIBRARIES})
target_compile_options(myLibrary PUBLIC -std=c++20 -Wall -Wconversion)
...
这工作正常,但不幸的是,它启动的版本与我需要的不同(5.7 而不是 6.1)
#include <ncurses.h>
#include <iostream>
int main()
{
std::cout << "VERSION: " << NCURSES_VERSION;
}
输出:VERSION: 5.7
我确实在以下位置安装了所需的软件包:/usr/local/ncurses/6_1
。
但是日志似乎说它是从不同的位置提取它的:Found Curses: /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/lib/libncurses.tbd
如何指定我想使用其中的哪些?
好的,我已经弄清楚了,对于可能遇到这个问题的任何其他人。
首先我从这里安装了最新版本的 ncurses (6.3):https://invisible-island.net/ncurses/#downloads-h2 (我下载了 gzipped tar)
然后我检查并删除了我能找到的 usr/local 中所有对 ncurses 的引用。
然后我提取了 tar,并进入了新目录。
我 运行 只是目录中的普通 ./configure
(没有标志)。
完成后,我运行make
然后我 运行 make install
,删除符号链接以停止冲突后,make install 能够 运行 正确。
确保 CMake 变量 CURSES_NEED_NCURSES 在找到包之前设置为 TRUE:
set(CURSES_NEED_NCURSES TRUE)
find_package(Curses REQUIRED)
它会完美运行:)