2013-09-06 3 views
3

У меня проблема с CMake. Я написал файл CMakeList.txt. Но когда я запускаю его с Cmake, я получил странную ошибку «Ошибка CMake в CMakeLists.txt: 17 (target_link_libraries): Невозможно указать библиотеки ссылок для целевой« отладки », которая не построена этим проектом .».Ошибка CMake в CMakeLists.txt (target_link_libraries)

Возможно ли создать файл Cmake, который может одновременно создавать файл проекта для режима отладки и выпуска? Или есть простой способ исправить эту ошибку?

Мой CMakeLists.txt выглядит следующим образом:

cmake_minimum_required (VERSION 2.8) 

project (SimuVille) 

# Import required CMake files 
set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules") 

file(GLOB_RECURSE files 
    "*.cpp" 
) 

add_executable(debug ${files}) 

# Find the find Modules 
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH}) 

#Find any version 2.X of SFML 
#See the FindSFML.cmake file for additional details and instructions 
find_package(SFML 2 REQUIRED system window graphics network audio) 
if(SFML_FOUND) 
    include_directories(${SFML_INCLUDE_DIR}) 
    target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES}) 
endif() 


#Find SfeMovie 
find_package(sfeMovie REQUIRED) 
if(SFEMOVIE_FOUND) 
    include_directories(${SFEMOVIE_INCLUDE_DIR}) 
    target_link_libraries(${EXECUTABLE_NAME} ${SFEMOVIE_LIBRARY}) 
endif() 

#Find Assimp 
find_package(ASSIMP REQUIRED) 
if(ASSIMP_FOUND) 
    include_directories(${ASSIMP_INCLUDE_DIR}) 
    target_link_libraries(${EXECUTABLE_NAME} ${ASSIMP_LIBRARY}) 
endif() 

#Find DevIL 
find_package(DevIL REQUIRED) 
if(IL_FOUND) 
    include_directories(${IL_INCLUDE_DIR}) 
    target_link_libraries(${EXECUTABLE_NAME} ${IL_LIBRARY}) 
    target_link_libraries(${EXECUTABLE_NAME} ${ILU_LIBRARY}) 
    target_link_libraries(${EXECUTABLE_NAME} ${ILUT_LIBRARY}) 
endif() 

#Find opengl libs 
find_package(OpenGL REQUIRED) 
include_directories(${OpenGL_INCLUDE_DIRS}) 
link_directories(${OpenGL_LIBRARY_DIRS}) 
add_definitions(${OpenGL_DEFINITIONS}) 
if(NOT OPENGL_FOUND) 
    message(ERROR " OPENGL not found!") 
endif(NOT OPENGL_FOUND) 

#file(GLOB_RECURSE hfiles 
# "*.h" 
#) 

#add_executable(SimuVille ${hfiles}) 


LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/Game) 
LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/GameEngine) 
LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/GameEngine/SfmlObject) 
LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/GameEngine/Camera) 
LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/GameEngine/OpenglObject) 
LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/GameEngine/Playable) 

Edit: Добавлен новый исходный код.

ответ

9

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

add_library(debug <files Name>) 

ИЛИ

add_executable(debug <files Name>) 

Если у вас есть эти строки в вашем файле, поставьте его перед target_link_libraries()

Смежные вопросы