如何解决CMake-此项目中使用了以下变量,但是将它们设置为NOTFOUND
我正在Linux Ubuntu上使用CMake。
这是我的项目结构。
根
- cmake
- 来源
-
- 普通
-
- 核心
-
-
- AuthServer
-
-
-
- WorldServer
-
在根CMakeLists.txt
中,我有:
cmake_minimum_required(VERSION 3.16)
project(Vibranium_Core)
set(CMAKE_CXX_STANDARD 14)
find_package(Boost 1.72.0)
if(NOT Boost_FOUND)
message(FATAL_ERROR "Could not find boost!")
endif()
include_directories(${Boost_INCLUDE_DIR})
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
find_package(MySQL REQUIRED)
include_directories(${MYSQL_INCLUDE_DIR})
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Source/Common)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Source/Core/WorldServer)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Source/Core/AuthServer)
set_target_properties(
Common WorldServer AuthServer
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
在Source/Core/AuthServer/CMakeLists.txt
中,我有:
if(WIN32)
if(MSVC)
list(APPEND PRIVATE_SOURCES AuthServer.rc)
endif()
endif()
add_executable(AuthServer AuthServer.cpp ${PRIVATE_SOURCES})
target_link_libraries(AuthServer LINK_PUBLIC Common)
if(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/configs/)
message(STATUS "Configs folder will be created: ${CMAKE_BINARY_DIR}/bin/configs")
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin/configs/)
endif()
if(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/configs/AuthServer.conf)
message(STATUS "New AuthServer Config file in will be installed in: ${CMAKE_BINARY_DIR}/bin/configs")
add_custom_command(
TARGET AuthServer POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/AuthServer.conf.dist
${CMAKE_BINARY_DIR}/bin/configs/)
endif()
在Source/Core/WorldServer/CMakeLists.txt
中,我有:
if(WIN32)
if(MSVC)
list(APPEND PRIVATE_SOURCES WorldServer.rc)
endif()
endif()
add_executable(WorldServer WorldServer.cpp ${PRIVATE_SOURCES})
target_link_libraries(WorldServer LINK_PUBLIC Common)
if(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/configs/)
message(STATUS "Configs folder will be created: ${CMAKE_BINARY_DIR}/bin/configs")
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin/configs/)
endif()
if(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/configs/WorldServer.conf)
message(STATUS "New WorldServer Config file in will be installed in: ${CMAKE_BINARY_DIR}/bin/configs")
add_custom_command(
TARGET WorldServer POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/WorldServer.conf.dist
${CMAKE_BINARY_DIR}/bin/configs/)
endif()
在cmake/FindMySQL.cmake
中,我有:
IF (MYSQL_INCLUDE_DIR)
# Already in cache,be silent
SET(MYSQL_FIND_QUIETLY TRUE)
ENDIF (MYSQL_INCLUDE_DIR)
FIND_PATH(MYSQL_INCLUDE_DIR mysql.h
/usr/local/include/mysql
/usr/include/mysql
)
SET(MYSQL_NAMES mysqlclient mysqlclient_r)
FIND_LIBRARY(MYSQL_LIBRARY
NAMES ${MYSQL_NAMES}
PATHS /usr/lib /usr/local/lib
PATH_SUFFIXES mysql
)
IF (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
SET(MYSQL_FOUND TRUE)
SET( MYSQL_LIBRARIES ${MYSQL_LIBRARY} )
ELSE (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
SET(MYSQL_FOUND FALSE)
SET( MYSQL_LIBRARIES )
ENDIF (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
IF (MYSQL_FOUND)
IF (NOT MYSQL_FIND_QUIETLY)
MESSAGE(STATUS "Found MySQL: ${MYSQL_LIBRARY}")
ENDIF (NOT MYSQL_FIND_QUIETLY)
ELSE (MYSQL_FOUND)
IF (MYSQL_FIND_REQUIRED)
MESSAGE(STATUS "Looked for MySQL libraries named ${MYSQL_NAMES}.")
MESSAGE(FATAL_ERROR "Could NOT find MySQL library")
ENDIF (MYSQL_FIND_REQUIRED)
ENDIF (MYSQL_FOUND)
MARK_AS_ADVANCED(
MYSQL_LIBRARY
MYSQL_INCLUDE_DIR
)
当我尝试重新加载Cmake配置时,出现此错误:
CMake Error: The following variables are used in this project,but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
MYSQL_INCLUDE_DIR (ADVANCED)
used as include directory in directory /home/venelin/Vibranium-Core
used as include directory in directory /home/venelin/Vibranium-Core
used as include directory in directory /home/venelin/Vibranium-Core/Source/Common
used as include directory in directory /home/venelin/Vibranium-Core/Source/Common
used as include directory in directory /home/venelin/Vibranium-Core/Source/Common
used as include directory in directory /home/venelin/Vibranium-Core/Source/Core/WorldServer
used as include directory in directory /home/venelin/Vibranium-Core/Source/Core/WorldServer
used as include directory in directory /home/venelin/Vibranium-Core/Source/Core/WorldServer
used as include directory in directory /home/venelin/Vibranium-Core/Source/Core/AuthServer
used as include directory in directory /home/venelin/Vibranium-Core/Source/Core/AuthServer
used as include directory in directory /home/venelin/Vibranium-Core/Source/Core/AuthServer
CMake Error in Source/Common/CMakeLists.txt:
Found relative path while evaluating include directories of "Common":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Common/CMakeLists.txt:
Found relative path while evaluating include directories of "Common":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Core/WorldServer/CMakeLists.txt:
Found relative path while evaluating include directories of "WorldServer":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Core/WorldServer/CMakeLists.txt:
Found relative path while evaluating include directories of "WorldServer":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Core/AuthServer/CMakeLists.txt:
Found relative path while evaluating include directories of "AuthServer":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Core/AuthServer/CMakeLists.txt:
Found relative path while evaluating include directories of "AuthServer":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Common/CMakeLists.txt:
Found relative path while evaluating include directories of "Common":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Common/CMakeLists.txt:
Found relative path while evaluating include directories of "Common":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Core/WorldServer/CMakeLists.txt:
Found relative path while evaluating include directories of "WorldServer":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Core/WorldServer/CMakeLists.txt:
Found relative path while evaluating include directories of "WorldServer":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Core/AuthServer/CMakeLists.txt:
Found relative path while evaluating include directories of "AuthServer":
"MYSQL_INCLUDE_DIR-NOTFOUND"
CMake Error in Source/Core/AuthServer/CMakeLists.txt:
Found relative path while evaluating include directories of "AuthServer":
"MYSQL_INCLUDE_DIR-NOTFOUND"
为什么会收到此错误,我该如何解决?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。