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

44
我正在处理一些C++相关的东西,但我不喜欢为了在一个文件上运行一些东西而创建一个全新的项目。
我也不喜欢创建项目时已经有一个名为"main.cpp"的文件。
我只想创建一个包含几个函数或类的单个文件。这并不重要到需要创建一个完整的项目。
我想创建一个文件,将其命名为我想要的名称,然后进行编译和运行。
我不想涉及整个CMake的事情,只是编译一个文件。
无关项目。谢谢。
我知道你可以在Visual Studio上做到这一点,但我正在使用Clion在Mac OS X上工作。

14
称呼我为老派吧,我只是通过命令行进行操作:g++ -std=c++11 -o target target.cpp,其中 "target" 是我要构建的程序的名称。 - paddy
你可以修改CMakeLists.txt文件。 这里有一个实现。 https://dev59.com/SF0a5IYBdhLWcg3whI8b#48729058 - Vignesh Pillay
6个回答

28

您可以修改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})

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

之后你可以在CLion中选择你想要的构建版本。


20
我刚遇到同样的问题,并在这个主题上绊倒了,然后在这个插件中找到了我的解决方案。 这个插件的功能基本上就是像用户Waxo建议的那样自动向CMakeLists.txt添加每个可执行文件的单行。你只需要在编辑器中右键单击并选择它。我发现它非常有用,主要用于算法比赛。 希望这可以帮到您:https://plugins.jetbrains.com/plugin/8352-c-c--single-file-execution 干杯!

6

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

add_executable(file_name_without_extension_cpp  file_name_with_extension_cpp)

例如:add_executable(CoinChange CoinChange.cpp) 然后点击重新加载更改,进入运行选项,选择要运行的文件,然后点击运行按钮。您的单个文件将被运行。
在您的CLion项目中有多少个单个文件,您将不得不执行相同操作以运行每个单个文件。

2
  1. 在CLion中安装插件"C/C++ Single File Execution"
  2. 找到要执行的文件,右键点击它,然后选择最后一个选项:添加单个可执行C/C++文件
  3. 转到运行选项或按下Alt + shift + f10,然后选择要运行的文件

0

为了实现跨IDE的便携式解决方案,我在我的main()开始处调用scratch()函数,并在scratch函数末尾加上exit(0);

scratch()内部,如果需要的话,可以调用另一个文件中的内容。 我通常只是在里面测试一些代码片段。


0

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

不过一个简单的CMake脚本就可以解决问题。

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

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})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接