最近在学习MySQL和CMake,想使用CMake 来管理项目。
先是安装MinGW,已设置, C_INCLUDE_PATH指向MinGW的安装目录,CPLUS_INCLUDE_PATH同上。
安装MySQL设置环境变量MYSQLDIR指向MySQL的安装目录。
appMain.h的内容如下:
#include <iostream>
#include <winsock.h>
#include <mysql.h>int main(int, char**)
{
MYSQL* mysql = mysql_init(0);
std::cout << "Hello world" << std::endl;
return 0;
}
CMakeLists.txt的内容如下:
cmake_minimum_required(VERSION 2.8)
project(demo)
set(CMAKE_VERBOSE_MAKEFILE ON)
message("include path is:" $ENV{CPLUS_INCLUDE_PATH})
include_directories($ENV{CPLUS_INCLUDE_PATH})
message("library path is:" $ENV{LIBRARY_PATH})
set(src appMain.cpp)
link_directories($ENV{LIBRARY_PATH})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
add_executable(demo ${src})
target_link_libraries(demo mysql)已设置环境变量:
set C_INCLUDE_PATH=%C_INCLUDE_PATH%;%MYSQLDIR%\include
set CPLUS_INCLUDE_PATH=%CPLUS_INCLUDE_PATH%;%MYSQLDIR%\include
SET LIBRARY_PATH=%LIBRARY_PATH%;%MYSQLDIR%\lib
编译出错:
undefined reference to `mysql_init@4'

解决方案 »

  1.   

    在Linux中使用CMake连接mysql成功,却不知为什么在Windows中失败。
    CMakeLists.txt
    cmake_minimum_required(VERSION 2.8)
    project(demo)
    find_package(MySQL REQUIRED)
    set(CMAKE_VERBOSE_MAKEFILE on)
    include_directories(${MYSQL_INCLUDE_DIR})
    set(CMAEK_VERBOSE_MAKEFILE ON)
    set(sources appMain.cpp)
    add_executable(demo ${sources})
    message(${MYSQL_LIBRARIES})
    target_link_libraries(demo ${MYSQL_LIBRARIES}) appMain.h
    #include <iostream>
    #include <mysql/mysql.h>int main(int, char**)
    {
        std::cout << "Hello world!" << std::endl;
        MYSQL mysql;
        mysql_init(&mysql);
        std::cout << "mysql is runing" << std::endl;
        mysql_close(&mysql);
        return 0;
    }