小编Art*_*tem的帖子

使用 CMake 进行交叉编译:如何排除默认 qt 库而不将它们传递到链接器的命令行

我想在 Linux x64 上使用 CMake for ARM 交叉编译 Qt 行星演示应用程序。

我安装了arm交叉编译器。我已经在 ARM 板上构建了 Qt 库,并将它们复制到 x64 Linux 盒子的 /lib/arm-linux-gnueabihf 中。

对于 qmake,我只在planets.pro 文件中添加了几行:

PLATFORM = arm-linux-gnueabihf
QMAKE_CXX = /usr/bin/$$PLATFORM-g++
QMAKE_LINK = /usr/bin/$$PLATFORM-g++
QMAKE_LIBS = -L/usr/$$PLATFORM/lib -L/lib/$$PLATFORM
Run Code Online (Sandbox Code Playgroud)

编译成功,在ARM板上完美运行。

现在,我想使用 CMake 来完成此操作。因此,我创建了以下 CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)

set(PLATFORM arm-linux-gnueabihf)
set(CMAKE_CXX_COMPILER /usr/bin/${PLATFORM}-g++)
link_directories(/usr/${PLATFORM}/lib /lib/${PLATFORM})

file(GLOB_RECURSE HEADERS "*.hpp")
file(GLOB SOURCES "*.cpp")

set(CMAKE_AUTOMOC ON)

find_package(Qt5Qml REQUIRED)
find_package(Qt5Quick REQUIRED)

add_executable(planets-qml ${SOURCES})

target_link_libraries(planets-qml
    Qt5::Qml
    Qt5::Quick
)
Run Code Online (Sandbox Code Playgroud)

这样我在 Qt Creator 的日志中出现以下警告:

Cannot generate a safe runtime search path for target …
Run Code Online (Sandbox Code Playgroud)

c++ linux linker qt

5
推荐指数
1
解决办法
3105
查看次数

如何仅获取给定的捕获组 <regex> C++

我想提取标签的内部内容。来自以下字符串:

<tag1 val=123>Hello</tag1>
Run Code Online (Sandbox Code Playgroud)

我只想得到

Hello
Run Code Online (Sandbox Code Playgroud)

我做什么:

string s = "<tag1 val=123>Hello</tag1>";
regex re("<tag1.*>(.*)</tag1>");
smatch matches;
bool b = regex_match(s, matches, re);
Run Code Online (Sandbox Code Playgroud)

但它返回两个匹配项:

<tag1 val=123>Hello</tag1>
Hello
Run Code Online (Sandbox Code Playgroud)

当我尝试只获取第一个捕获组时,如下所示:

"<tag1.*>(.*)</tag1>\1"
Run Code Online (Sandbox Code Playgroud)

我得到零匹配。

请指教。

c++ regex c++11

4
推荐指数
1
解决办法
5878
查看次数

标签 统计

c++ ×2

c++11 ×1

linker ×1

linux ×1

qt ×1

regex ×1