在多部分 cmake 项目中获得源代码外构建的正确方法
我使用 cmake 来构建、测试和安装我的项目。 我的方法有点粗糙:我使用这样的脚本来获得源外构建:
DIR=debug_build &&
rm -fr ./${DIR} &&
mkdir -p ${DIR} &&
cd ${DIR} &&
cmake -D CMAKE_BUILD_TYPE=Debug $@ .. &&
make
我想我至少可以将其放入 makefile 中,但是使用 Makefile 运行 cmake 生成新的 Makefile 并运行是不是很奇怪另一个品牌?
正确的做法是什么? cmake 是否可以选择避免调用“cd”?
最近,当我分解出一个我想单独编译、测试和分发的库时,它变得更加复杂。 我想避免重复我顶级 CMakeLists.txt 中的所有内容。
如何用cmake正确地做到这一点?
I use cmake to build, test and install my project.
My way is a little crude: I use a scripts like this to get an out-of-source build:
DIR=debug_build &&
rm -fr ./${DIR} &&
mkdir -p ${DIR} &&
cd ${DIR} &&
cmake -D CMAKE_BUILD_TYPE=Debug $@ .. &&
make
I guess I could at least put it into makefile, but isnt it strange to use Makefile to run cmake to generate new Makefiles and run another make?
What is the proper way to do it?
Does cmake have an option to avoid calling "cd"?
Recently it became even more complicated as I factoread out a library that I would like to compile, test and distribute separately. I want to avoid duplication of all the stuff I have in my top CMakeLists.txt.
How to do it properly with cmake?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不,CMake 没有任何此类选项。 我通常喜欢有一个包装器 Makefile 来控制 CMake 调用。
这里的主要问题是 Makefile 生成器不支持在运行 make 时指定配置,而 Visual Studio 生成器则支持。 我认为有一个为此提出的功能请求,但修复这将是一个非常侵入性的过程。
No, CMake does not have any such option. I usually like to have a wrapper Makefile to control CMake-invocations.
The main issue here is that the Makefile-generator doesn't support specifying the configuration when running make, as the Visual Studio generator does. I think there is a feature request filed for this, but it would be very invasive procedure to fix.
这似乎是处理此问题的最常见形式。 我通常看到(并使用)批处理脚本(unix 上的 shell 脚本,或者 Windows 上的批处理文件)来处理这个问题,因此运行 ./build 将创建构建文件夹,CD在那里,运行 cmake,构建,然后去回到原来的文件夹。
This seems to be the most common form of handling this. I've typically seen (and used) batch scripts (either shell scripting on unix, or just batch files on Windows) to handle this, so running ./build will create the build folder, CD there, run cmake, build, then go back to the original folder.
还可以使用 CMake GUI,如果构建文件夹不存在,它会自动创建该文件夹。
One could also use CMake GUI which will create the build folder automatically if it doesn't exist.