最近在学习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'
先是安装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'
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;
}