C++ 如何在编译过程之前运行一些安装命令?
我将在我的CMakeLists中使用install命令,如下所示:C++ 如何在编译过程之前运行一些安装命令?,c++,cmake,C++,Cmake,我将在我的CMakeLists中使用install命令,如下所示: install(DIRECTORY lib-mmm/src/infra/ DESTINATION /home/nick/infra FILES_MATCHING PATTERN "*.h") 这是将某个目录安装到某个位置的命令 我希望在其他编译过程之前运行此程序 但我发现,当我将它定义为install时,它将仅在makeinstall时被调用,这是在make进程之后 如何使install directory
install(DIRECTORY lib-mmm/src/infra/ DESTINATION /home/nick/infra FILES_MATCHING PATTERN "*.h")
这是将某个目录安装到某个位置的命令
我希望在其他编译过程之前运行此程序
但我发现,当我将它定义为install时,它将仅在makeinstall时被调用,这是在make进程之后
如何使install directory命令在真正的编译过程之前运行?Afaik使用相同的项目无法做到这一点。安装目标依赖于正在生成的目标,任何生成对安装目标的依赖都将导致循环依赖 不过,还有其他选择:
execute\u process
在配置期间设置、构建和安装另一个cmake项目。不过,让cmake对该构建使用相同的选项可能会有问题。这也可以通过获得add_custom_命令
来改进在您的情况下,使用
target\u include\u directories
简单地添加正确的include目录可能会更好。这感觉像是一个XY问题,尤其是在您尝试安装头文件时。你的实际问题是什么?你想解决的真正问题是什么?在编译项目之前,找不到infra
?@StephenNewell的头文件,我会将一些头文件安装到某个位置,并且项目源代码正在使用该位置的头文件,因此,必须先调用install this header,然后再调用编译过程。我认为install()无法使我的安装头首先工作,我想知道如何才能做到这一点。您可以在配置过程中使用命令来复制文件和目录。@gordan.sikic问题是:使用了旧的infra,因为源代码使用的是infra代码,所以在编译其他代码之前,我必须先安装infra。