如何解决如何与CMake无缝构建?
当我使用configure
或什至Makefile
克隆项目时,我知道我可以做./configure && make
或仅做make all && sudo make install
。但是每次我有CMakelists.txt
时,我的旅程都会变得更加艰难...
通常,我必须先创建一个新目录,然后进入该目录,然后启动cmake
,但我可能忘记了-G
或-g
。。然后{{1 }}或Makefiles
或也许LinuxMakefiles
:
Linux Makefile
通常在99%的时间内,我收到诸如... mkdir build
cd build
cmake -g "Unix Makefiles" ..
make
之类的错误,没有此类文件或目录。今天是file.h
可以与#include <allegro5/color.h>
或allegro5
一起安装,或者...让我们尝试allegro-dev
:liballegro5-dev
...是的。
在此示例中,我想显示使用sudo apt-get install liballegro5-dev
构建项目的麻烦。有没有一种方法可以使体验更加愉悦:自动列出依赖项,避免创建构建文件夹并记住CmakeLists.txt
?
解决方法
首先,不要直接调用构建系统。而是通过cmake使用它,这样无论配置了哪个构建系统,它都将起作用:
# not this
#make
# do this
cmake --build .
我忘记了-G或-g。然后是Makefile或LinuxMakefile或Linux Makefile
如果在Linux上编译,则Unix Makefiles为默认文件。您只需不指定参数即可使用默认值:
cmake ..
当我们按照答案的第一部分使用cmake调用构建系统时,我们甚至不需要关心正在使用哪个构建系统。
如果要自定义默认值,可以使用环境变量CMAKE_GENERATOR
关于多步操作,尽管它们经常会因反复使用而卡在人脑中,但无需记住它们。您可以将它们写入文件,该文件甚至可以用作执行它们的Shell脚本:
#!/bin/sh
mkdir --parents build
cd build
cmake ..
cmake --build .
从技术上讲,您可以进行内联构建,但我不建议您这样做,因为单独的目录可以使构建文件不受版本控制,也可以避免具有不同配置的单独构建的麻烦。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。