如何将图像文件夹添加到CMake项目,以便在c ++可执行文件中使用这些图像?

黛比

我对Qt和CMake完全陌生。我一直在对我的项目(cmake和qt)进行google测试,为此我需要测试两个图像的匹配情况。我有一个包含这些图像的文件夹(项目目录之外)。我想访问这些图像,但不使用绝对路径。

像这样:

imread("home/../../test_images/img1.jpg")

但是我想为images文件夹设置一个公共路径,以便以后使用我的项目的任何人都只test_image需要相对于他们的机器设置他们的文件夹路径,而无需在代码中进行更改。

到目前为止,我已经尝试了以下方法。

1。尝试添加.qrc资源文件并尝试访问图像。(由于images文件夹不在项目目录中,因此此操作无效。)

  1. 试图在QT构建环境设置中设置Path变量。

两种方法均无效。

我要完成的任务是:“为了避免对我使用的图像使用绝对路径,并允许尝试实现我的代码的人仅使用自己的测试图像位置在一个位置更改路径。”

编辑:寻找一种设置变量的方法,该变量eg.IMG_PATH = "/path/to/image/files"只能设置一次,并且在整个可执行文件中仅使用该变量。因此,当有人克隆我的项目时,他们只需要IMG_PATH使用其图像文件所在的路径来更新变量即可。这样,IMG_PATH变量就可以在项目其余部分的任何地方进行更新。

@squareskittles给出答案后的更新:

我的项目结构:

Project_Tester

|--CMakeList.txt

|--ExecutableScript.sh.in   

|--test

       |---CMakeList.txt

       |---sample1.cpp

       |---sample2.cpp

       |---main.cpp

样本1,2是具有不同测试用例的c ++文件。main.cpp运行sample.cpp文件中的所有测试,如下所示:

#include "gtest/gtest.h" 

int main(int argc, char** argv)
 { 
       ::testing::InitGoogleTest(&argc, argv);

       return RUN_ALL_TESTS(); 
}

根据@squareskittles给出的答案,我应该如何构造main.cpp以便能够使用/访问文件sample1.cpp和sample2.cpp中的变量“ IMAGES_PATH”

  1. 有没有一种方法可以通过QT Creator单独执行,而不是通过终端运行(通过修改.sh文件内容)?

  2. 或者可以在ExecutableScript.sh.in文件中手动设置路径

  3. 如何从项目的其他cpp文件中访问设置的变量?

九柱游戏

为了扩展我的建议,您可以使用CMake从配置和构建项目的用户那里获取初始默认路径。CMake可以像这样从命令行获取路径,然后使用configure_file()提供的路径来填充可执行的启动脚本。

cmake使用这样的-D选项运行以填充名为的CMake变量IMAGES_PATH

cmake -DIMAGES_PATH=/my/path/to/imagefiles ..

configure_file()向您添加调用以CMakeLists.txt生成可执行的启动脚本:

...
configure_file(
    ${CMAKE_SOURCE_DIR}/MyExecutableStartScript.sh.in 
    ${CMAKE_BINARY_DIR}/MyExecutableStartScript.sh @ONLY
)

该调用将读取模板文件(MyExecutableStartScript.sh.in),并将生成一个新MyExecutableStartScript.sh文件,将@IMAGES_PATH@模板启动脚本中变量替换为图像的实际路径。模板文件如下所示:

#!/bin/sh

./MyExecutable "@IMAGES_PATH@"

填充的启动脚本(运行CMake之后)将被重命名MyExecutableStartScript.sh并包含以下内容:

#!/bin/sh

./MyExecutable "/my/path/to/imagefiles"

读取此命令行路径参数的简单C ++可执行文件可能如下所示:

#include <string>
#include <iostream>

int main(int argc, char ** argv) {
    string imagesPath = "";
    if( argc == 2 ) {
      imagesPath = argv[1];
    } else {
      std::cout << "Usage: ./MyExecutable /path/to/images" << std::endl;
      return 1;
    }
    ...
}

生成可执行文件后,可以通过手动修改生成的启动脚本轻松更改图像的路径。最重要的是,此示例允许您在开始时设置一次默认位置,但是您也不需要重新构建代码即可更改图像文件路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在使用 pyinstaller 构建 kivy 可执行文件时添加图像文件

来自分类Dev

如何防止这些可执行文件启动?

来自分类Dev

Git:使用可执行文件

来自分类Dev

Git:使用可执行文件

来自分类Dev

文件结构并在 Cmake 中使可执行文件

来自分类Dev

如何使用CMake将测试可执行文件放入单独的文件夹中?

来自分类Dev

“使用回滚可执行文件”不强制设置可执行文件

来自分类Dev

jar中图像和可执行文件的路径

来自分类Dev

cmake 在添加的可执行文件中使用库目标

来自分类Dev

如何在Linux中使用模式执行多个可执行文件

来自分类Dev

如何在Linux中使用模式执行多个可执行文件

来自分类Dev

在C#.NET项目中使用(ffmpeg)可执行文件

来自分类Dev

如何在可执行文件Jar中使用包含的文件

来自分类Dev

如何在可执行文件中使用 pyinstaller 包含特定的 .jar 文件?

来自分类Dev

在使用Xcode编译的Java可执行文件中导出大型PNG图像

来自分类Dev

使用 Pyinstaller 创建的可执行文件无法打开图像

来自分类Dev

在Windows中使用带有声音的.bat文件运行可执行文件

来自分类Dev

如何将TrueType字体文件添加到pyinstaller可执行文件以与Pygame一起使用?

来自分类Dev

使用Electronjs执行可执行文件

来自分类Dev

如何在可执行文件中使用grep字符串

来自分类Dev

如何撰写bash脚本中使用的所有可执行文件的列表?

来自分类Dev

在我的独立可执行文件中使用R的C代码:“未定义符号”

来自分类Dev

如何使用 C++ 输出可执行文件

来自分类Dev

在我的PATH中使用特定字符串查找可执行文件

来自分类Dev

是否可以在valgrind中使用没有调试符号的可执行文件?

来自分类Dev

在可执行文件中使用嵌入式.dll

来自分类Dev

Linux可执行文件中使用的代码转换类型

来自分类Dev

在可执行文件中使用GNU标准目录变量

来自分类Dev

尝试在 ant 中使用 exec 可执行文件来运行 R

Related 相关文章

  1. 1

    在使用 pyinstaller 构建 kivy 可执行文件时添加图像文件

  2. 2

    如何防止这些可执行文件启动?

  3. 3

    Git:使用可执行文件

  4. 4

    Git:使用可执行文件

  5. 5

    文件结构并在 Cmake 中使可执行文件

  6. 6

    如何使用CMake将测试可执行文件放入单独的文件夹中?

  7. 7

    “使用回滚可执行文件”不强制设置可执行文件

  8. 8

    jar中图像和可执行文件的路径

  9. 9

    cmake 在添加的可执行文件中使用库目标

  10. 10

    如何在Linux中使用模式执行多个可执行文件

  11. 11

    如何在Linux中使用模式执行多个可执行文件

  12. 12

    在C#.NET项目中使用(ffmpeg)可执行文件

  13. 13

    如何在可执行文件Jar中使用包含的文件

  14. 14

    如何在可执行文件中使用 pyinstaller 包含特定的 .jar 文件?

  15. 15

    在使用Xcode编译的Java可执行文件中导出大型PNG图像

  16. 16

    使用 Pyinstaller 创建的可执行文件无法打开图像

  17. 17

    在Windows中使用带有声音的.bat文件运行可执行文件

  18. 18

    如何将TrueType字体文件添加到pyinstaller可执行文件以与Pygame一起使用?

  19. 19

    使用Electronjs执行可执行文件

  20. 20

    如何在可执行文件中使用grep字符串

  21. 21

    如何撰写bash脚本中使用的所有可执行文件的列表?

  22. 22

    在我的独立可执行文件中使用R的C代码:“未定义符号”

  23. 23

    如何使用 C++ 输出可执行文件

  24. 24

    在我的PATH中使用特定字符串查找可执行文件

  25. 25

    是否可以在valgrind中使用没有调试符号的可执行文件?

  26. 26

    在可执行文件中使用嵌入式.dll

  27. 27

    Linux可执行文件中使用的代码转换类型

  28. 28

    在可执行文件中使用GNU标准目录变量

  29. 29

    尝试在 ant 中使用 exec 可执行文件来运行 R

热门标签

归档