Cmake:我如何生成<;项目>;目标-<;配置>;。cmake文件?(例如MyLibTargets debug.cmake)

Cmake:我如何生成<;项目>;目标-<;配置>;。cmake文件?(例如MyLibTargets debug.cmake),cmake,Cmake,标题说明了一切。如何生成Targets-.cmake文件?用哪个命令?(注意:所谓配置,我指的是CMAKE\u BUILD\u TYPE变量的内容,即调试、发布等 注意:我知道install(导出fooTargets文件“fooTargets.cmake”DESTINATION lib/foo)(其中foo是我的自定义库,fooTargets是从install导出的值(目标foo导出fooTargets…)创建基本Targets.cmake文件,但它还需要配置/生成类型文件,我找不到有关它的详

标题说明了一切。如何生成
Targets-.cmake
文件?用哪个命令?(注意:所谓配置,我指的是
CMAKE\u BUILD\u TYPE
变量的内容,即调试、发布等


注意:我知道
install(导出fooTargets文件“fooTargets.cmake”DESTINATION lib/foo)
(其中
foo
是我的自定义库,
fooTargets
是从
install导出的值(目标foo导出fooTargets…
)创建基本
Targets.cmake
文件,但它还需要配置/生成类型文件,我找不到有关它的详细信息


更新


该文件似乎是通过install(EXPORT…)命令生成的,但在Windows版本的cpack中存在漏洞,在运行
cpack
时会忽略它。我会在有时间时做更多的研究,然后发布结果。

您需要删除
文件
子选项:

install(EXPORT fooTargets DESTINATION lib/foo)
发件人:

默认情况下,生成的文件将被调用.cmake,但文件
选项可用于指定其他名称。

查看此项目:

谢谢,我不知道该项目,很遗憾我在周一没有找到它,这将节省我很多天的研究。但是,它并不能解决我的问题。删除文件子选项不会解决任何问题,它只是更改名称。我使用它只是因为字母大小写规范化。
安装(出口…)
仍然会像往常一样生成文件
*Target.cmake
,而且
*Target-.cmake
有时也会生成,也就是说,当我调用
make install DESTDIR=/foo
时会生成,但当我调用
cpack-G ZIP
时不会生成。所以我仍然在寻找直接生成
*.Target-.cmake
文件的直接方法…所以如果我在en添加CMakeFiles.txt的d“
include(CPack)
”,结果仍然是一样的-调用
CPack-G ZIP后,整个项目都打包了,它包括了所有东西,除了该死的
*Target-.cmake
文件,如果我想将项目导出给同样使用cmake并希望使用我的库的人,它就毫无用处了…干得好:).无论如何,关于新问题-我已经创建了它-事实上,我在写这篇文章之前就做了。在那篇文章中,我问了关于cpack的问题,当它看起来没有人知道或使用cpack时,我创建了这个问题,它只与cmake和
*Target-.cmake
文件有关。(顺便说一句,这个问题的答案解决了另一个问题,但不是相反)。(顺便说一句,我知道我可以只使用
makeinstalldestdir=./my_dir
然后打包,但是cpack可以创建很好的安装程序,所以我想使用这个功能…)啊,我终于有时间在家使用Linux(Ubuntu)(直到现在我还在windows7下)我发现这里
cpack
创建了配置目标文件…我将对最新版本的cmake/cpack进行更多的研究,但它看起来像Widows cpack bug。请注意您的示例项目:我想您从未在Linux上运行过它-它可以工作,但需要修复两件事:
include(cpack)
必须是
include(cpack)
添加库(foo-foo.cpp)
必须是
添加库(foo-foo.cpp)
(或将
foo.cpp
重命名为
foo.cpp
)。Linux区分大小写,无法运行这些行。
By default the generated file will be called <export-name>.cmake but the FILE
option may be used to specify a different name.