Как создать, скомпилировать и запустить один файл в CLion

Я работаю над некоторыми файлами С++, и мне не нравится создавать совершенно новый проект, просто чтобы запустить несколько вещей в файле.

Мне также не нравится, как при создании проекта файл уже называется main.cpp.

Я просто хочу создать один файл с несколькими функциями или классами. Это не важно для создания целого проекта.

Я хочу создать файл и называть его тем, что хочу. Просто создайте файл, который я вызываю, затем скомпилируем и запустите.

Я не хочу иметь дело со всей темой CMake, просто скомпилируйте ОДИН файл.

Не связано с проектом. Спасибо.

Я знаю, что вы можете сделать это на visual studio, но я работаю над Mac OS X, используя Clion.

Ответы

Ответ 1

Вы можете изменить 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

Ответ 2

У меня был тот же вопрос и наткнулся на этот поток, а затем нашел свое решение в этом плагине. То, что делает этот плагин, в основном состоит в том, что пользователь Waxo предложил автоматически: добавляет одну строку в CMakeLists.txt для каждого исполняемого файла для вас. Вам просто нужно щелкнуть правой кнопкой мыши в редакторе и выбрать его. Я нашел его довольно полезным и использовал его в основном для конкурсов алгоритмов. Надеюсь, что это поможет: https://plugins.jetbrains.com/plugin/8352-c-c--single-file-execution

Ура!

Ответ 3

Для переносимого решения между IDE я вызываю функцию scratch() в начале функции main() и помещаю exit(0); в конце функции нуля.

Внутри функции scratch() вы можете вызывать что-то в другом файле, если хотите. Я обычно просто проверяю фрагменты там.