Я пытаюсь использовать CLI IDE в Linux, и я переношу приложение SFML. Он настаивает, что я использую CMake, с которым у меня возникают проблемы.Проблемы с CMake при попытке включить мои исходные файлы
cmake_minimum_required(VERSION 2.6)
project(SFML2)
include_directories("${PROJECT_BINARY_DIR} src/")
include_directories("${YOUR_DIRECTORY} src")
# Define sources and executable
set(EXECUTABLE_NAME "SFML")
add_executable(${EXECUTABLE_NAME} src/SFML.cpp)
# Detect and add SFML
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules"
${CMAKE_MODULE_PATH})
find_package(SFML 2 REQUIRED system window graphics network audio)
target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})
# Install target
install(TARGETS ${EXECUTABLE_NAME} DESTINATION bin)
# CPack packaging
include(InstallRequiredSystemLibraries)
Однако я получаю ошибки построения
CMakeFiles/SFML.dir/src/SFML.cpp.o: In function `main':
SFML.cpp:(.text+0xca): undefined reference to `Game::Game()'
SFML.cpp:(.text+0xd9): undefined reference to `Game::run()'
CMakeFiles/SFML.dir/src/SFML.cpp.o: In function `Game::~Game()':
SFML.cpp:(.text._ZN4GameD2Ev[_ZN4GameD5Ev]+0xa2): undefined reference to `Player::~Player()'
SFML.cpp:(.text._ZN4GameD2Ev[_ZN4GameD5Ev]+0xb4): undefined reference to `Player::~Player()'
SFML.cpp:(.text._ZN4GameD2Ev[_ZN4GameD5Ev]+0x18b): undefined reference to `Player::~Player()'
SFML.cpp:(.text._ZN4GameD2Ev[_ZN4GameD5Ev]+0x1a2): undefined reference to `Player::~Player()'
collect2: error: ld returned 1 exit status
CMakeFiles/SFML.dir/build.make:90: recipe for target 'SFML' failed
make[2]: *** [SFML] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/SFML.dir/all' failed
make[1]: *** [CMakeFiles/SFML.dir/all] Error 2
Makefile:136: recipe for target 'all' failed
make: *** [all] Error 2
Ссылка Игра находится в том же месте, что и SFML.cpp, который где все запускается с.
Это в настоящее время работает без проблем в Eclipse CDT
, но его ошибки взяты из компоновщика ... И если весь проект (пользовательская часть) состоит только из одного исходного файла, я не вижу, чтобы Player был неопределенным, если этот источник использовался для создания штрафа, прежде чем перейти к CLion/cmake ... – onqtam
Его ошибки связаны с компоновщиком, но единственное различие заключается в том, что до того, как у него был один исходный файл, и после того, как у него был тот же исходный файл и все другие имена без названия в папке 'src'. Поэтому должен быть какой-то исходный код, который ему нужен из 'src'. –