我正在使用CMake生成一个可执行文件和多个库。我已将可执行文件的输出文件夹和所有库指定为一个常见的“bin”文件夹。如何使用相对路径在CMake生成的解决方案中打开源代码中的文件
使用:
set_target_properties (${PROJ}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${BIN_DIR}"
ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${BIN_DIR}"
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BIN_DIR}"
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${BIN_DIR}"
LIBRARY_OUTPUT_DIRECTORY_DEBUG "${BIN_DIR}"
LIBRARY_OUTPUT_DIRECTORY_RELEASE "${BIN_DIR}"
)
在图书馆之一,我使用的是相对路径打开一个资源文件。此路径相对于“bin”文件夹.//Resources//file.jpg
(因为Resources文件夹位于bin文件夹中)。
当我从Visual Studio调试器运行exe时,发现它正确运行bin文件夹中的exe文件,但是当它试图打开file.jpg时,它在相对于CMAKE_BINARY_DIR
的路径中查找。所以,CMAKE_BINARY_DIR/Resources/file.jpg
。所以,我得到一个运行时错误,说没有找到文件。
解决此问题的最佳方法是什么?我不想复制CMAKE_BINARY_DIR
中的所有资源。似乎应该有更好的方法。
感谢您提前提供任何帮助。
您需要设置调试正确的工作目录中的Visual Studio项目属性。它应该是'$(TargetDir)'而不是默认的'$(ProjectDir)'。 –
谢谢丹。那就是诀窍。我接下来的问题是如何在cmake中设置它,这样你就不必通过VS来设置它。但显然,没有简单的方法来做到这一点,它必须通过修改.user文件来完成。您可以发布您的答案作为答案。 – ak22