大佬教程收集整理的这篇文章主要介绍了c – 在安装之前和之后使用CMake一致配置文件路径,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个问题.
>让我们有一个简单的场景:单个项目没有层次结构.我必须使用/不安装运行应用程序.所以如果我把一个安装指令保存在/ etc中,我可以获得一个常量的cfg路径.但在我不希望安装的情况下.我想在make之后立即运行可执行文件.那么如何以这样的方式管理cfg呢?
>接下来是我的场景,我有一个子项目的层次结构.监视器需要a.cfg和b.cfg.并且所有cfg都分别保存在另一个子项目中.这个设计可用吗?我可以在这种情况下解决来自a,b和监视器的cfg文件的路径吗?
但是我可以在monitor.cfg中放入include指令来包含a.cfg和b.cfg.但这归结为同样的问题.使用/不使用install来寻址cfg文件的路径.
abcd cfg # configuration files abcd # to be copied to /etc/abcd on install a.cfg # configuration b.cfg monitor.cfg includes/cfg sources -> libabcd-cfg.so # target library that abstracts configurations as objects components a: cfg # sub project a (requires abcd/a.cfg) -> a # target executable b: cfg # sub project b (requires abcd/b.cfg) -> b # target executable monitor: cfg # sub project monitor (requires abcd/a.cfg,b.cfg,monitor.cfg) -> monitor # target executable
一个简单的解决方案是将一组全局搜索路径保存在首先搜索的cfg / includes / cfg / defs.h中.然后搜索/ etc.但是配置文件保存在不同的项目中.不管用.
>从构建一中的安装树重现相对路径.在这种情况下,可执行文件应使用地址cfg文件的相对路径.如果将所有可执行文件安装到同一目录中,则可以将变量CMAKE_RUNTIME_OUTPUT_DIRECTORY设置为二叉树内的某个目录.因此,所有二进制文件都将在给定目录中生成. (如果使用add_subdirectory()方法构建子项目,则在顶级项目中设置变量将影响所有子项目).对于配置文件,您可以使所有子项目使用相同的变量来构建它们:
if(NOT DEFINED CFG_OUTPUT_DIRECTORY) # Use in-subproject path by default. set(CFG_OUTPUT_DIRECTORY "${CR_786_11845@AKE_CURRENT_BINARY_DIR}/cfg") endif() configure_file(a.cfg.in `${CFG_OUTPUT_DIRECTORY}`/a.cfg)
同样,在顶级项目中设置此类CFG_OUTPUT_DIRECTORY变量将影响子项目.
>使用可选环境变量指向cfg-file.因此,对于从构建树运行可执行文件,您可以在构建树中将此变量设置为cfg-file:
A_CFG_PATH=${CR_786_11845@AKE_CURRENT_BINARY_DIR}/a.cfg a.exe <args>
(对于运行已安装的可执行文件,您根本不需要设置环境变量).>根本不支持从构建树运行可执行文件.从测试的结果来看它有原因:我们为什么要测试构建树,而预期的用户将使用安装树.
以上是大佬教程为你收集整理的c – 在安装之前和之后使用CMake一致配置文件路径全部内容,希望文章能够帮你解决c – 在安装之前和之后使用CMake一致配置文件路径所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。