2017-01-11 5 views
0

私のCMake問題の解決策を見つけることができないようです。CMakeとC++でmysql-connectorを実行していますか?

私はmysqlのコネクタ-C++を使用したいとCURLは、私の/Desktop/exampleディレクトリに私は、次のCMakeLists.txtを作りました:

cmake_minimum_required (VERSION 3.1.0) 
PROJECT (main) 
ADD_EXECUTABLE (main main.cpp) 
target_link_libraries(main curl mysql-connector-c++) 
target_compile_features(main PRIVATE cxx_range_for) 

私は私のmain.cppにで次のヘッダーを含めました:

#include <curl/curl.h> 

#include <mysql_connection.h> 
#include <driver.h> 
#include <exception.h> 
#include <resultset.h> 
#include <statement.h> 

私は、MySQLコネクタ-C++、解凍したためzip fileをダウンロードして、私の現在のディレクトリにこれを置いてきました。

私はその後cmake .makeを実行したと、次のエラーが生成されます。私は、MySQLコネクタヘッダを削除すると、CURLが正常に動作として

fatal error: 
    'mysql_connection.h' file not found 

これは奇妙です。

これはなぜ機能していないのですか?

N.B 次のコマンドは述べた結果と実行します。

g++ -std=c++14 -lcurl main.cpp //Success 
g++ -std=c++14 -lcurl -lmysqlcppconn main.cpp //Fatal eror: 'mysql_connection.h' file not found 
+0

解凍したアーカイブを 'Desktop/example'の中に入れましたか? – fedepad

+0

@fedepadこれは解凍された 'mysql-connector-C++'の代わりにするべきですか? –

+0

必要ない、私はあなたが試みることができる答えを書いています... – fedepad

答えて

1

私はCMakeの「含む(include)」または「ライブラリ」ディレクトリとしてヘッダとライブラリが含まれているディレクトリを知っていないと信じています。

cmake_minimum_required (VERSION 3.1.0) 
project(main) 
set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR your_path_to_mysql_connectorcpp) 
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include) 
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/cppconn) 
link_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/lib) 
add_executable(main main.cpp) 
target_link_libraries(main curl mysqlcppconn) 
target_compile_features(main PRIVATE cxx_range_for) 

ほとんどのノート:

1)もしあなたが試すことができます一つの解決策は、ので、あなたのCMakeLists.txtはのようになりますコール

ADD_EXECUTABLE (main main.cpp) 

前に含めると、リンクのディレクトリを指定することですあなたのソースにdriver.hを呼びたい場合は、より上のCMakeLists.txt を使用してください。

2)あなたは、あなたが下のCMakeLists.txt を使用する必要があり、あなたのソースにcppconn/driver.hを呼び出したい場合は:あなたのcmakeのはより複雑になりますと

cmake_minimum_required (VERSION 3.1.0) 
project(main) 
set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR your_path_to_mysql_connectorcpp) 
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include) 
link_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/lib) 
add_executable(main main.cpp) 
target_link_libraries(main curl mysqlcppconn) 
target_compile_features(main PRIVATE cxx_range_for) 

、あなたはまた、ディレクトリとライブラリが含ま定義することができますターゲットごとに、しかしあなたが今持っているもののために上記のものは大丈夫になるはずです。

+0

これは、 'ld:-lmysql-connector-C++'のライブラリが見つかりませんでした。 –

+1

本当にライブラリの名前は正しいですか?私がダウンロードしたので、名前は 'libmysqlcppconn.dylib'のように見えるので、' target_link_libraries() 'に' mysqlcppconn'を入れてください。私は答えを更新する。 – fedepad

+0

ありがとうございました! –

関連する問題