我的 CMake 有问题。我写了一个 CMakeList.txt 文件。但是当我用 Cmake 运行它时,我收到一个奇怪的错误“CMake Error at CMakeLists.txt:17 (target_link_libraries): 无法为目标“调试”指定链接库,该目标不是由此构建的 项目。”。
是否可以创建一个可以同时构建 Debug 和 Release 模式的项目文件的 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)
编辑:添加了新的源代码。
看起来您的 CMakeLists.txt 不包含两行中的任何一行(这取决于您正在创建库或可执行文件)
add_library(debug <files Name>)
或
add_executable(debug <files Name>)
如果您的文件中有这些行,请将其放在
target_link_libraries ()
之前
我也有同样的问题。我刚学C++,一直用python。尝试在 Clion 中添加库 - 通过 Vcpkg 安装并直接从 JetBrains 网站复制示例...c
cmake_minimum_required(VERSION 3.28)
project(Test)
add_executable(Test main.cpp)
find_package(PNG REQUIRED)
include_directories(${PNG_INCLUDE_DIR})
target_link_libraries(main PRIVATE ${PNG_LIBRARY})
set(CMAKE_CXX_STANDARD 17)
但我明白:
CMake Error at CMakeLists.txt:6 (target_link_libraries):
Cannot specify link libraries for target "main" which is not built by this
project.