我想在 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) 我想提取标签的内部内容。来自以下字符串:
<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)
我得到零匹配。
请指教。