CMake неопределенная ссылка на главную - PullRequest
1 голос
/ 25 декабря 2011

Когда я пытаюсь скомпилировать мою программу с make, я получаю неопределенную ссылку на основную ошибку.Тем не менее, main существует в моем каталоге src, и я чувствую себя потерянным из-за того, что делаю неправильно.

Я предполагаю, что add_executable([title] [source]) - это команда, используемая для добавления исходных файлов в компиляцию.

На основе учебника по cmake

cmake_minimum_required(VERSION 2.6)
project(opengl_02)
add_executable(opengl_02 opengl_02.cpp)
add_executable(main main.cpp)
add_executable(geometrics geometrics.cpp)
set (opengl_02_version_major 1)
set (openfl_02_version_minor 0)

#configure the header file to pass some of the CMake settings 
#to the source code

configure_file(
    "${PROJECT_SOURCE_DIR}/opengl_02_config.h.in"
    "${PROJECT_BINARY_DIR}/opengl_02_config.h"
    )

#add the binary tree to the search path for include files
#so that it will find tutorialconfig.h

include_directories("{PROJECT_BINARY_DIR}")

add_executable(opengl_02_config opengl_02_config.cpp)

Вопрос

Почему на мой основной файл не ссылаются?

1 Ответ

5 голосов
/ 25 декабря 2011

int main (int argc, char *argv[]) (или его эквивалент без параметров) должен присутствовать в каждой программе. Трудно сказать, что не так с вашей установкой, не глядя на исходный код, но у меня есть ощущение, что основная функция присутствует не в каждом файле, который вы пытаетесь скомпилировать в исполняемый файл, то есть opengl_02.cpp, geometrics.cpp или main.cpp. Если вы действительно хотите создать три исполняемых файла, функция main должна присутствовать во всех трех исходных файлах в вашем примере. Если вы хотите создать исполняемый файл из трех исходных файлов, вы должны указать все из них для одного исполняемого файла, например add_executable(main main.cpp opengl_02.cpp geometrics.cpp). Надеюсь, это поможет.

...