我想继续在Windows上开发我的项目。我在Linux上使用以下CMakeLists.txt进行开发,以找到我的mysql连接器:
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
)我已经安装了:https://dev.mysql.com/downloads/windows/installer/8.0.html
你能建议我需要对我的CMakeLists.txt进行什么样的更改才能在Windows上找到连接器吗?目前,我收到以下错误:
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)发布于 2020-08-28 02:00:59
在您链接的同一站点上,Windows installation layout页面描述了您的MySQL安装可能位于的位置:
对于Windows8.0,对于使用MySQL Installer执行的安装,默认安装目录为C:\Program Files\MySQL\MySQL Server 8.0。如果您使用ZIP存档方法安装MySQL,您可能更喜欢在C:\mysql中安装。但是,子目录的布局保持不变。
您可以调整CMake代码以在Windows上搜索一组不同的硬编码路径:
IF (MYSQL_INCLUDE_DIR)
# Already in cache, be silent
SET(MYSQL_FIND_QUIETLY TRUE)
ENDIF (MYSQL_INCLUDE_DIR)
# Check if this is Windows.
if(WIN32)
FIND_PATH(MYSQL_INCLUDE_DIR mysql.h
"C:/Program Files/MySQL/MySQL Server 8.0/mysql"
)
SET(MYSQL_NAMES mysqlclient mysqlclient_r)
FIND_LIBRARY(MYSQL_LIBRARY
NAMES ${MYSQL_NAMES}
PATHS "C:/Program Files/MySQL/MySQL Server 8.0/lib"
PATH_SUFFIXES mysql
)
else()
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
)
endif()
...当然,您可能需要修改代码中的路径以匹配您的特定安装位置。
此外,如果多人将在不同的机器上使用此存储库,最好将这些硬编码路径移动到CMake缓存变量。这样,在配置CMake以适应其特定的MySQL安装位置时,每个人都可以修改缓存变量,而不是修改CMake代码本身中的硬编码值。
https://stackoverflow.com/questions/63621398
复制相似问题