cmake - 在 CLion CMake 中链接 ncurses

标签 cmake clion

我目前正在研究 ncurses。 Ncurses 是我安装的库,不是我自己的文件。我已经做了一些事情,但使用 IDE 更容易,所以我决定使用 CLion(我在 Linux 上,所以不能使用 Visual Studio)。我得到以下 CMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(ncurses)

set(CMAKE_C_STANDARD "${CMAKE_C_FLAGS} -Wall -Werror -lpdcurses")

set(SOURCE_FILES main.cpp ncurses.h)
add_executable(ncurses ${SOURCE_FILES})

我的项目叫做 ncurses 我不知道这是否重要。

我得到了以下 main.cpp

#include <ncurses.h>

int main() {
    initscr();
    printw("Hello");
    refresh();
    getch();
    endwin();
    return 0;
}

但是,我收到以下错误:

/opt/clion/bin/cmake/bin/cmake --build /home/josh/ClionProjects/ncurses /cmake-build-debug --target all -- -j 4
make[2]: *** No rule to make target 'CMakeFiles/ncurses.dir/build'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:68: CMakeFiles/ncurses.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

我不明白问题是什么。除了 lpdcurses 之外,我尝试了 -lncurses 但这也不起作用。它只会在构建时出错,但不会在 IDEA 本身中出错。

最佳答案

要告诉编译器使用 CMake 链接库,您应该使用 target_link_libraries() 函数。

将此添加到您的 CMakeLists.txt 中:

target_link_libraries(${PROJECT_NAME} ncurses)

但是,您的错误代码似乎不是由链接引起的。尝试在 add_executable() 之前添加此行:set(CMAKE_CXX_STANDARD 17)。将 17 替换为您想要的任何 C++ 版本。我很确定它不会改变任何东西,但值得一试。另外,不要忘记重新加载 cmake 项目并重置缓存。

关于cmake - 在 CLion CMake 中链接 ncurses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41017629/

相关文章:

c++ - message.pb.h 文件中的 Protobuf : Cannot open include file common. h

cmake - 如何使用 CMake 从 CPack 二进制文件中排除文件/目录

c++ - 使用 Cmake 来做 ./genMakefiles && make -j4

c++ - CMake 仅在重新加载时复制文件,而不是构建

c++ - 在 Linux 上使用 CMake 构建 gRPC C++

c++ - 根据 cmake 目标启用宏

c++ - 如何让 CLion 将 .c 文件识别为 C++(而不是普通的 C)

cmake - 如何让 CLion 运行安装目标

c++ - 使用 dlopen/libdl.co -ldl 标志时出现 CLion IDE 问题

c++ - 在 CLion 中调试时程序收到段错误