(CLion / CMake) Почему мой файл c не принадлежит ни одному целевому проекту, когда он сохраняется в каталоге проекта? - PullRequest
0 голосов
/ 16 октября 2018

Предисловие: Я очень новичок в c и CLion, поэтому заранее извиняюсь, если моя формулировка очень неправильная.

По сути, у меня есть задание, которое включает два файла c ("главный" и одинвыполнение преобразования между имперскими и метрическими единицами).Основной файл c просто # include-s файл преобразования, выполняет функцию в файле преобразования и печатает полученное значение для пользователя.Достаточно просто, но я продолжаю получать сообщение каждый раз, когда пытаюсь его запустить:

"неопределенная ссылка на" конверсию ""

Я пытался выяснитьпроблема, и моя единственная идея связана с баннером в верхней части файла Conversion.c, который гласит: «Этот файл не принадлежит ни одной цели проекта, функции анализа кода могут работать неправильно.» .Я не понимаю, почему я получаю это сообщение, потому что файлы translation.c и main.c находятся в главном каталоге проекта, и эта установка прекрасно работала в моем предыдущем назначении.

Я искал решения в Интернете,и единственное, что, казалось, имело смысл, - это обновить мой файл CMakeLists.txt, включив в него add_executable (project translation.c) .Вот как выглядит мой файл CMakeLists.txt, прежде чем я добавлю эту строку:

cmake_minimum_required(VERSION 3.12)
project(project C)

set(CMAKE_C_STANDARD 11)

add_executable(project main.c)

Однако, когда я добавляю его, я получаю ошибку:

CMake Error at CMakeLists.txt:7 (add_executable):
add_executable cannot create target "directory" because another
target with the same name already exists.  The existing target is an
executable created in source directory
"/home/john_s/CLionProjects/project".  See documentation for
policy CMP0002 for more details.

Предположительно, это потому, чтопредыдущая строка, которую я имею ( add_executable (project main.c) ), связана с тем же каталогом, но я не знаю, как решить эту проблему.Есть предложения?

1 Ответ

0 голосов
/ 16 октября 2018

Из cmake manual :

add_executable (<имя> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [source1] [source2 ...])

Добавляет исполняемую цель, вызываемую для сборки, из исходных файлов, перечисленных в вызове команды.(Исходные файлы можно опустить здесь, если они будут добавлены позже с помощью target_sources ().)

Таким образом, чтобы объединить один исполняемый файл с использованием двух исходных файлов, вы просто используете:

add_executable(target_name source1.c source2.c)
...