【问题标题】:Trouble including the 'X11/Xlib.h' header file within CMake [duplicate]在 CMake 中包含“X11/Xlib.h”头文件时出现问题 [重复]
【发布时间】:2020-04-10 05:43:38
【问题描述】:

我无法在 CLion 上的 CMake 中正确包含 X11/Xlib.h 头文件。下面是 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.15)
project(X11 C)

set(CMAKE_C_STANDARD 11)
add_compile_options(-Wall -lX11)

add_executable(X11 main.c)

还有main.c文件:

#include <stdio.h>
#include <stdlib.h>

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>


int main(int argc, char **argv) {

    Display *dpy = XOpenDisplay(NULL);

    return EXIT_SUCCESS;
}

错误是undefined reference to 'XOpenDisplay'-Wall 标志工作正常,我收到此 sn-p 的未使用变量警告。最后,我可以毫无问题地从命令行编译 main.c:

gcc main.c -lX11

【问题讨论】:

    标签: c gcc cmake clion


    【解决方案1】:

    XOpenDisplay 在libX11.a 中并与-lX11 链接是正确的。

    但也许您的libX11.a 不在编译器搜索的标准目录中。 在我的系统 (FreeBSD) 上,它位于 /usr/local/lib 并与 -L/usr/local/lib -lX11 链接。

    所以,找到您的libX11.a 所在的目录,并将-L/path/to/directory 添加到链接命令中。

    我对 CMake 了解不多,但是将链接选项添加到名为 add_compile_options 的东西听起来不对。有类似add_link_options 指令的东西吗? -Wall 用于编译,-L-l 用于链接。

    【讨论】:

    • 感谢您的洞察力。链接帖子中显示的正确命令是 target_link_libraries() 并在 CMake 添加可执行文件后添加它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多