the*_*one 19 eclipse-cdt cmake
我有一个包含代码和一些数据文件的CMake项目(图像是精确的).
我的目录结构是这样的:
src包含源代码,数据包含数据文件.CMake建议在源代码构建之外,所以当我调用make时,我有可执行程序,但不是数据文件,因此我无法执行该程序.
当然,make install会将我的数据文件复制到所需的位置并使其正常工作,因此我现在就这样开发:
<edit source code>如果我正在使用命令行和编辑器,那没关系,但我最近决定转向Eclipse CDT.从CMake生成Eclipse项目效果很好,但是从Eclipse 手动执行安装目标并不是那么好.
你们是如何解决这个问题的呢?你的程序是否有一些聪明的算法来尝试找到它的数据目录,即使它不是二进制文件的位置?或者你不使用源代码构建?
fhd*_*fhd 18
configure_file 应该解决这个问题.
我的数据目录中有一个CMakeLists.txt文件,其中包含以下内容:
configure_file(data_file ${CMAKE_CURRENT_BINARY_DIR}/data_file COPYONLY)
Run Code Online (Sandbox Code Playgroud)
这会在调用cmake时将指定的文件复制到构建目录中,因此即使在源代码构建之外,它也可以在同一位置使用.
configure_file但是,当file命令执行时,它不支持目录:
file(COPY assets DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
Run Code Online (Sandbox Code Playgroud)
And*_*dré 11
如果复制文件需要花费太多时间(它们是图像......),您可以通过使用configure_file创建"自定义"data_header.h来实现更好的目的,该configure_file包含仍在源目录中的数据的路径.
这就是我所做的:我的源代码中有一个文件"global_build_config.h.in",包含以下内容:
const char* const global_testdatapath = "@Test_Data_Path@";
Run Code Online (Sandbox Code Playgroud)
然后在CMake中使用configure_file:
# Assume CMake knows a variable Test_Data_Path, it will be filled in automatically
# in the generated config/Global_Build_Config.h
configure_file( Global_Build_Config.h.in ${CMAKE_BINARY_DIR}/config/Global_Build_Config.h )
# The config directory should be added as a include-searchpath
include_directories( ${CMAKE_BINARY_DIR}/config/ )
Run Code Online (Sandbox Code Playgroud)
然后我可以在我的cpp文件中#include"Global_Build_Config.h"并引用固定路径.
| 归档时间: |
|
| 查看次数: |
6245 次 |
| 最近记录: |