如何在CLion中创建,编译和运行单个文件

How to Create, Compile, And Run a single file in CLion

本文关键字:编译 运行 单个 文件 创建 CLion      更新时间:2023-10-16

我正在做一些c++的东西,我讨厌为了在一个文件上运行一些东西而创建一个全新的项目。

我也不喜欢当你创建一个项目时,文件已经被称为main.cpp

我只想制作一个包含几个函数或类的文件。它并不重要到足以创建一个完整的项目。

我想创建一个文件,并命名为我想要的。只要创建一个文件,然后编译并运行。

我不想处理整个CMake的事情,只编译一个文件。

与项目无关。谢谢你。

我知道你可以在visual studio上做到这一点,但我正在使用Clion在mac OS X上工作

您可以修改CMakeLists.txt

下面是一个例子:

cmake_minimum_required(VERSION 3.3)
project(test_build)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(BUILD_1 main)
set(SOURCE_FILES_1 main.cc) //where main.cc is your first main/program
add_executable(${BUILD_1} ${SOURCE_FILES_1})
set(BUILD_2 main_2)
set(SOURCE_FILES_2 main_2.cc) //where main_2.cc is your second main/program
add_executable(${BUILD_2} ${SOURCE_FILES_2})

或者使用test(垃圾版本):
add_executable(foo bar.cc)

之后,您可以在CLion中选择您想要的构建

我刚刚有同样的问题,偶然发现了这个线程,然后在这个插件中找到了我的解决方案。这个插件所做的基本上是用户Waxo自动建议的:在CMakeLists.txt中为每个可执行文件添加一行。你只需要在编辑器中右键单击并选择它。我发现它非常有用,主要用于算法竞赛。希望对您有所帮助:https://plugins.jetbrains.com/plugin/8352-c-c--single-file-execution

干杯!

在每个CLion项目中都有一个CMakeLists.txt文件。
要运行单个文件,您必须在该文件中写入单个命令,即:

add_executable(file_name_without_extension_cpp  file_name_with_extension_cpp)

例如:add_executable(CoinChange CoinChange.cpp)

然后点击重新加载更改,然后转到运行选项,然后选择你想要运行的文件,然后点击运行按钮。您的单个文件将被运行。

在您的CLion项目中将有多少单个文件,您将不得不为运行每个单个文件执行相同的操作。

  1. 在CLion内部安装插件"C/c++单文件执行"
  2. 找到你想要执行的文件,右键单击然后选择最后一个选项,即添加单个可执行的单个c/cpp文件
  3. 进入运行选项或按Alt + shift + f10并选择要运行的文件

对于跨IDE的可移植解决方案,我在main()的开头调用scratch()函数,并将exit(0);放在scratch函数的末尾。

scratch()内部,如果您愿意,可以调用其他文件中的内容。我通常只测试代码片段

CLion是基于CMake的。所以,如果你不想使用CMake,你可以使用其他编辑器,如Sublime Text。

但是一个简单的CMake脚本可以解决这个问题。

下面的CMake脚本自动将当前目录及其子目录中的cpp文件添加到可执行文件中(filename作为目标名称)。

cmake_minimum_required(VERSION 3.15)
project(MyApp)
set(CMAKE_CXX_STANDARD 17)
file(GLOB APP_SOURCES *.cpp */*.cpp)
foreach (testsourcefile ${APP_SOURCES})
    get_filename_component(testname ${testsourcefile} NAME_WE)
    message("${testname}")
    add_executable(${testname} ${testsourcefile})
endforeach (testsourcefile ${APP_SOURCES})