假设我有一个项目,我已经在.build目录中运行CMake:
project/
.build/
.src
目前我必须这样做来运行构建:
cd .build
make
我希望能够从我的项目的根目录运行make,也许是
make -f ./build/Makefile
但它不起作用 . 我得到这样的错误
make[1]: CMakeFiles/Makefile2: No such file or directory
make[1]: *** No rule to make target `CMakeFiles/Makefile2'. Stop.
make: *** [all] Error 2
这是因为CMake生成的Makefile假定其工作目录与它所在的位置(.build)相同 .
是否可以让CMake生成一个makefile,使makefile将工作目录更改为它所在的位置?
2 回答
另一种方法是在你想要运行的目录中创建另一个Makefile,其内容类似于:
然后你可以从顶级目录中输入“make” .
我认为没有办法让cmake生成可以从任何位置运行的Makefile . 这不是通常如何使用make .
但是你可以哄骗cmake在你的项目根目录中创建一个额外的帮助器makefile,在CMakeLists.txt中有一些像cmake:
(如果需要,将“$ ”替换为解析为项目根目录的表达式)
您需要在源代码树中创建文件ProjectRootMakefile.in,其内容如下:
它将用作项目根Makefile的模板 . (确保在“cd”之前使用制表符,而不是空格)
我没有测试过这些建议,但这里应该有足够的建议给你一般的想法 .
你只需要告诉make你的基目录在哪里,不需要改变cmake .