CLion教程-Makefile项目
完全支持在CLion中的Makefile项目仍在不断完善中。如果您希望获得所需功能,请使用与C++-494相关联的工单来提供反馈并投票支持。
打开Makefile项目
- 从主菜单中选择“文件 | 打开”。
- 指向包含顶级Makefile的文件夹,或直接指向该文件:
- 在弹出的对话框中,点击“以项目方式打开”。
您将被提示清理项目:
- 项目加载需要进行清理,因为Make构建是增量的,只会编译已更新的文件。如果在未清理的项目上运行,重新加载将会忽略所有未更改的文件,可能会出现错误。
- 如果希望在加载时不进行清理,请取消选中“清理项目”复选框。您稍后可以手动清理和重新加载项目(例如,在执行所需的引导操作后)。
- 此时,CLion开始加载项目,将进度和状态显示在构建工具窗口中:
在此过程中可能会出现警告消息,但如果加载完成后项目名称旁边出现了绿色的勾号 ,这表示加载成功。
在已打开的项目中加载Makefile
您还可以将项目以文件夹形式打开,并稍后加载Makefile。这在某些情况下很有帮助,例如,如果您的项目需要进行一些预配置步骤或启动脚本以准备最终的Makefile,这时在CLion中打开项目时还没有它。
当准备好加载Makefile时,在编辑器中打开它,然后单击通知中的“加载Makefile项目”链接:
或者,从项目树中的文件上下文菜单中使用“加载Makefile项目”操作。
在使用版本控制系统(VCS)管理Makefile项目时,请考虑不要共享.iml文件,因为它会在导入时重新生成。
配置自动重新加载
默认情况下,CLion不会自动更新或重新加载项目,除非出现外部事件,例如VCS更新。您可以在“设置 | 构建、执行、部署 | 构建工具”中更改此行为。
- 转到“设置 | 构建、执行、部署 | 构建工具”。
选择以下自动重新加载选项之一:
- 任何更改 - 在任何Makefile更改时触发项目重新加载。
- 外部更改(默认) - 仅在外部事件(例如VCS更新)时重新加载项目。如果发生其他更改(例如添加新文件),您将在Makefile上收到通知:
此设置是针对每个项目的。自动重新加载选项应为您的每个Makefile、编译数据库或Gradle项目单独配置。
手动重新加载
除了自动选项外,您还可以手动重新加载项目:
- 从主菜单中选择“工具 | Makefile”中的“重新加载Makefile项目”或“清理并重新加载Makefile项目”。
- 或者,在构建工具窗口中,单击 或 :
您的项目可能还需要在修改后执行./configure步骤,以获取更新的Makefiles。
调整项目设置
使用“设置 | 构建、执行、部署 | Makefile”对话框来控制您的项目设置。
工具链
在这里,您可以选择用于加载Makefile项目的工具链。注意,NMake目前不受支持,因此您不能直接使用Visual Studio工具链。要使用它,您需要单独使用GNU Make构建项目。 如果您选择的工具链包含非默认编译器(在C编译器和C++编译器字段中明确配置),它们也将传递给`make`。
有关Windows的详细信息:
- 您的Makefile可能包含工具的完整路径。在这种情况下,请确保选择具有相同路径的相应工具链。
- 在使用MinGW工具链时,检查路径是否不包含空格。如有必要,使用
~
符号,例如 C:PROGRA~1mingw-w64...。
- 构建选项
在此字段中,您可以为项目构建提供附加的make选项。这些选项不会影响项目重新加载。 - 命令
在此字段中,您可以调整预配置参数。 - 参数
当CLion在提取项目信息、清理项目或搜索构建目标的步骤中调用make
命令时,将使用这些参数。 - 构建目标和清理目标
这些目标与make
命令一起用于提取项目信息。如果将构建目标字段留空,CLion将采用项目顶级Makefile中指定的第一个目标。
此外,这些目标在您从构建操作菜单中调用“构建项目”或“重新构建项目”时也会被使用。
您可以从构建工具窗口中快速访问Makefile设置对话框。从上下文菜单中选择“Makefile设置”或点击 :
高级设置
有关Makefile项目的更多设置可以在“设置 | 高级设置”中找到:
运行/调试Makefile应用程序
CLion会自动为顶级Makefile中的每个目标创建一个Makefile应用程序配置:
在创建配置时,CLion会过滤掉以下目标:
clean
目标。- 与目标(.o)文件对应的目标。
- 以未知文件扩展名结尾的目标(例如,.d)。
您可以自定义自动创建的配置,或者在“运行 | 编辑配置”对话框中创建新配置(如下所述)。
创建Makefile应用程序配置
- 转到“运行 | 编辑配置”,点击 ,然后从模板列表中选择“Makefile应用程序”:
在“目标”字段中,您可以选择检测到的目标之一:
- 另一个选项是使用类型为Make的自定义构建目标。点击“目标”字段旁边的 ,添加一个新的Make目标(点击 ),然后填写参数:
- 另一个选项是使用类型为Make的自定义构建目标。点击“目标”字段旁边的 ,添加一个新的Make目标(点击 ),然后填写参数:
在“可执行文件”字段中,提供二进制文件的完整路径。
如果计划调试应用程序,请确保二进制文件包含调试符号。例如,您可以在Makefile中的
CXXFLAGS
中添加-g
。- 要在远程上运行/调试,请提供远程机器上二进制文件的路径。注意,需要手动设置远程路径。
- Makefile应用程序模板的其他设置在参考页面中有描述。
运行Makefile应用程序配置
在切换器中选择所需的配置,然后使用以下选项之一:
- 点击 。
- 按下
Shift
+F10
。 - 从主菜单中选择“运行 | 运行所选配置”。
调试Makefile应用程序配置
在开始调试会话之前,请确保配置中指定的二进制文件包含调试符号。
在切换器中选择所需的配置,然后使用以下选项之一:
- 点击工具栏上的 。
- 按下
Shift
+F9
。 - 从主菜单中选择“运行 | 调试所选配置”。
运行Makefile目标
您可以使用装订线菜单快速调用特定目标的make
命令:
或者,您可以从Make工具窗口(查看 | 工具窗口 | make)中运行目标。双击目标,或者选择它然后点击 :
执行任何这些操作时,CLion都会创建一个临时配置,类型为Makefile目标。您可以在“运行 | 编辑配置”对话框中自定义它,或者从同一模板创建新配置(如下所述)。
创建Makefile目标配置
- 转到“运行 | 编辑配置”,点击 ,然后从模板列表中选择“Makefile目标”:
- 在设置中,您可以设置要运行的多个目标,提供附加参数,并根据需要调整其他参数。
- 与Makefile应用程序不同,Makefile目标配置使用“设置 | 构建、执行、部署 | 构建工具 | Make”中的“Path to Make executable”无论当前选定的工具链如何,都会使用。
- 无法在远程或Docker工具链中使用Makefile目标配置。请参阅下文以了解WSL的详细信息。
WSL特定事项
同步设置
在使用WSL时,请确保同步项目特定的工具链设置和全局Make设置:
- 转到“设置 | 构建、执行、部署 | 构建工具 | Make”。
- 点击“Path to Make executable”旁边的选择器,并设置为WSL的
make
路径:
非根WSL用户
如果在非根WSL用户下工作,则应将此用户设置为默认用户,以便拥有make
进程和它可能创建的所有文件。
在WSL guest中创建一个/etc/wsl.conf文件,并添加以下行:
[user] default=username
在这里,`username`是WSL guest用户名(可能与Windows用户名不同)。
- 重启WSL会话以使更改生效。
问题和限制
虽然CLion支持Makefile项目,但请注意以下问题和限制:
- 不支持使用NMake。
- 不支持具有空格的路径或文件名。
- 在Makefile中使用的变量可能无法在CLion中正确解析。
- 在某些情况下,Makefile项目的代码分析可能会出现问题。
- 对于更复杂的项目,可能需要使用自定义CMake配置来实现更好的集成。