【问题标题】:cmake + cpp: No such file or directorycmake + cpp:没有这样的文件或目录
【发布时间】:2019-09-30 06:26:09
【问题描述】:

我正在尝试在 Linux 上构建 this "Hello World" wxWidgets example,使用以下 cmake 脚本:

cmake_minimum_required (VERSION 2.6)
project (wxL)

find_package(wxWidgets 3.0.0 REQUIRED
    COMPONENTS base core net xml html adv qa richtext
)

file(GLOB SOURCES "src/*.cpp")

add_executable(wxL ${SOURCES})

构建项目会产生此错误:

src/wxL.cpp:3:10: fatal error: wx/wxprec.h: No such file or directory

包含中指定的文件 wx/wxprec.h 可以在磁盘上的以下位置找到:

/usr/include/wx-3.0/wx/wxprec.h

此外,我从源代码构建的另一个程序包含相同的文件(也使用 cmake)并且构建得很好。

那么,我如何使用 cmake 告诉编译器该文件应该从系统目录的某个位置包含进来?

我知道我缺少一些基本的东西,但我不知道是什么。

【问题讨论】:

  • 如果可执行文件使用wxWidgets,你不需要告诉cmake吗?
  • 是的,但是怎么做?这是我的问题。
  • 请花些时间浏览the CMake documentation。您需要添加包含目录/usr/include/wx-3.0 并设置目标应链接的库。
  • 它在wxWidgets site 上告诉你。
  • 谢谢@trojanfoe,include(${wxWidgets_USE_FILE}) 似乎成功了(至少现在我遇到了另一个错误)。

标签: c++ cmake


【解决方案1】:

虽然您找到了该软件包,但您的可执行文件对它一无所知。
为了正确编译可执行文件,它需要为您的包找到 header 文件以及 .so / .a 文件。以下示例应该可以帮助您入门:

include_directories(${wxWidgets_INCLUDE_DIRS})

add_executable(wxL <add-source-files-here>)
target_link_libraries(wxL ${wxWidgets_LIBRARIES})    // links wxWidgets libraries to your executable

请注意,不推荐使用 glob 将源文件添加到项目中。

【讨论】:

  • 几乎正确。实际上是target_link_libraries(wxL ${wxWidgets_LIBRARIES})。请更正此问题并包含add_executable 指令(在您的两行代码之间),我会将此答案标记为已接受。
  • @SilviuG 非常感谢。每个包都有自己的命名约定,因此很难即时猜出正确​​的。我修改了 asnwer 。
猜你喜欢
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 2016-06-26
相关资源
最近更新 更多