CMakeLists несколько исходных файлов - PullRequest
0 голосов
/ 28 декабря 2018

Привет У меня есть каталог с именем "Question 1" со следующей структурой:

.idea 
cmake-build-debug
1a.c
1b.c
1c.c
CMakeLists.txt

.idea and cmake-build-debug - это папки, содержащие другие данные, которые приходят по умолчанию при создании проекта (я использую CLion),другие 3 - мои исходные файлы, т.е. 1a.c, 1b.c, 1c.c.Мой CMakeLists.txt файл содержит следующее:

cmake_minimum_required(VERSION 3.7)
project(CLion)

set(CMAKE_C_STANDARD 99)

set(SOURCE_FILES 1b.c)
add_executable(CLion ${SOURCE_FILES})

Как вы можете себе представить выше, я могу запустить только исходный файл 1b.c.Как мне отредактировать CMakeLists.txt, чтобы я мог создать исполняемый файл для каждого исходного файла?

1 Ответ

0 голосов
/ 28 декабря 2018

Каждый add_executable() вызов в вашем CMakeLists.txt указывает отдельный исполняемый файл для сборки.Поскольку вам нужно три исполняемых файла, вам нужно три таких вызова.

Кроме того, каждому исполняемому файлу требуется свое имя.В случае, когда каждый исполняемый файл создается из своего собственного исходного файла, обычно имена источников и исполняемых файлов связаны между собой.В частности, я ожидал бы, что исполняемый файл, построенный из 1b.c, будет иметь имя 1b.

Собрав это вместе, вот один из способов сделать это:

cmake_minimum_required(VERSION 3.7)
project(CLion)

set(CMAKE_C_STANDARD 99)

add_executable(1a 1a.c)
add_executable(1b 1b.c)
add_executable(1c 1c.c)

Обратите внимание, что вы нене нужно использовать переменную для обозначения исходных файлов для исполняемого файла.Более того, если вы хотите использовать переменные, тогда в имени переменной SOURCE_FILES нет ничего особенного.Например, вы могли бы излишне усложнить приведенный выше пример, введя исходные переменные для каждой цели, например:

cmake_minimum_required(VERSION 3.7)
project(CLion)

set(CMAKE_C_STANDARD 99)

set(SOURCES_1A 1a.c)
set(SOURCES_1B 1b.c)
set(SOURCES_1C 1c.c)

add_executable(1a ${SOURCES_1A})
add_executable(1b ${SOURCES_1B})
add_executable(1c ${SOURCES_1C})
...