在CLion(Ubuntu)上构建wxWidgets 3.1.0

6

我目前正在尝试在CLion 1.3项目中构建wxWidgets-3.1.0。我使用的是Ubuntu 16.04(64位)。基本上,我像这样编辑了CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.5)
project(WxProva)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules"
${CMAKE_MODULE_PATH})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
add_executable(WxProva ${SOURCE_FILES})

find_package(wxWidgets)
include_directories(${wxWidgets_INCLUDE_DIRS})
target_link_libraries(WxProva ${wxWidgets_LIBRARIES})

“外部库”部分也显示了wxWidgets,但是当我在我的main.cpp上写一些代码时,所有与该库相关的东西似乎都无法被编译器访问(它们都以红色书写,就像一个错误)。无论如何,如果我尝试编译,结果如下:
/home/federico/ClionProjects/WxProva/main.cpp:2:35: fatal error: wxWidgets-3.1.0/include: File o directory non esistente
compilation terminated.

这就像是“文件或目录不存在”的错误信息。

我该如何解决这个问题?


你是如何构建wxWidgets的?你是从仓库还是源代码安装的?你使用的是哪个版本? - Igor
我将它添加到/lib文件夹中,并从cmd安装。版本是3.1.0。安装成功了,但我仍然收到这个错误。 - Federico Màlato
2个回答

9

经过一些实验,这里提供一个解决方案。您只需复制它并更改一些信息,就可以准备构建和运行。

cmake_minimum_required(VERSION 3.7)
project(Your_Project_Name) //any name for your project

set(CMAKE_CXX_STANDARD 11)

set(wxWidgets_ROOT_DIR </usr/include/wx-3.0-unofficial>) // here I am  giving where to search for wxwidgets library. it can be different for you
set(wxWidgets_CONFIGURATION mswu)
find_package(wxWidgets COMPONENTS core base REQUIRED)
include(${wxWidgets_USE_FILE})

set(SOURCE_FILES main.cpp)
add_executable(FirstC ${SOURCE_FILES})

target_link_libraries(FirstC ${wxWidgets_LIBRARIES})

更多信息请查看https://wiki.wxwidgets.org/CMake

编辑1 在这里,您甚至不需要添加一些编译和链接配置(wx-config --cxxflagswx-config --libs),因为在NetBeans中是必要的。


1
这是macOS 10.14.4(Mojave)和CLion 2019.1的示例配置 (/usr/local 是我安装wxWidgets的文件夹)。
cmake_minimum_required(VERSION 3.14)
project(wx1Test)

set(CMAKE_CXX_STANDARD 14)

set(wxWidgets_ROOT_DIR </usr/local/include/wx-3.1>)
set(wxWidgets_CONFIGURATION mswu)
find_package(wxWidgets COMPONENTS core base  REQUIRED)
include(${wxWidgets_USE_FILE})

set(SOURCE_FILES main.cpp)
add_executable(wx1Test ${SOURCE_FILES})

target_link_libraries(wx1Test ${wxWidgets_LIBRARIES})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接