2017-02-02 15 views
0

私はCMakeプロジェクトを作成してVisual Studio 2015でコンパイルしようとしていましたが、プロジェクトファイルを生成すると、CMakeは生成されたプロジェクトにディレクトリを追加していません

ブーストバージョン:1.62.0
見つかり以下Boostライブラリ:
システム
スレッド
クロノ
DATE_TIME
原子

を行って設定ここでは発生時にCMakeから関連する出力があります 生成完了

そしてパスはすべて正しいです。 CMakeはインクルードディレクトリをVC++ディレクトリにどこに置くべきですか? ビルドシステムはどこで間違っていますか?次のように

実際CMakeLists.txtは次のとおりです。

#MultiTracker Application 
cmake_minimum_required (VERSION 3.1) 
project(MultiTracker) 

#Additional CMake search modules 

#Require C++11 
set (CMAKE_CXX_STANDARD 11) 
message(STATUS "Generating Makefile for MultiTracker") 

file(GLOB SRC_FILES *.cpp) 
#Find and link boost 
SET(Boost_USE_STATIC_LIBS ON) 
find_package(Boost REQUIRED system thread) 

add_executable(MultiTracker ${SRC_FILES}) 
#Link internal libraries 

#Link 3rd party libraries 
target_link_libraries(MultiTracker ${Boost_LIBRARIES}) 

#The native OS thread library 
set(THREADS_PREFER_PTHREAD_FLAG ON) 
find_package(Threads REQUIRED) 
target_link_libraries(MultiTracker Threads::Threads) 

MAIN.CPP

//System Includes 
#include <iostream> 
#include <cstdlib>  

//Library Includes 
#include <boost/program_options.hpp> 
#include <boost/format.hpp> 

//Local Includes  


int main(int iArgc, char *cpArgv[]) 
{ 
    std::string confName = "Conf.json", outFileName, inFileName; 

    //setup the program options 
    boost::program_options::options_description oPODescriptions("Available options"); 
    oPODescriptions.add_options() 
     ("help", "help message") 
     ("confFile", boost::program_options::value<std::string>(&confName)->default_value("pclConf.json"), "Name of the configuration file to use"); 

    boost::program_options::variables_map mapVars; 
    try 
    { 
     boost::program_options::store(boost::program_options::parse_command_line(iArgc, cpArgv, oPODescriptions), mapVars); 
     boost::program_options::notify(mapVars); 
    } 
    catch (std::exception &e) 
    { 
     std::cerr << e.what() << std::endl; 
     return 2; 
    } 

    //print the help message 
    if (mapVars.count("help")) 
    { 
     std::cout << "Stack Overflow Test: " << oPODescriptions << std::endl; 
     return ~0; 
    } 

    std::cout << "Press enter to exit" << std::endl; 
    std::cin.get(); 
} 

ありがとう!

+1

[CMakeLists.txtでどのように追加ライブラリを追加しますか?](http://stackoverflow.com/questions/6646405/how-do-you-add-boost-libraries-in- cmakelists-txt) – roalz

+1

[最小で完全で検証可能な例](http://stackoverflow.com/help/mcve)を提供してください。 – cromod

+0

@roalzそうは思わない。 CMakeは成功したが、生成されたプロジェクトには含まれていないと思う。 – user2448431

答えて

4

また、あなたのCMakeLists.txtファイルにBoost依存関係をどのように管理しましたか?

あなたはfind_package(ブースト)(see reference here)、
を使用した場合、あなたのターゲットプロジェクトにBoost_INCLUDE_DIRSを追加する必要がありますが、プロジェクトによってリンクされたライブラリに、ディレクトリ、 とBoost_LIBRARIESが含まれます。

非常によく似た質問を参照してください、ここで答え:How do you add boost libraries in CMakeLists.txt

追加の質問は、あなたが不足している
を編集された後:

target_include_directories(MultiTracker PRIVATE ${Boost_INCLUDE_DIRS}) 

(あなたのケースではわからないことについて "PRIVATE")

+0

sooooたくさんありがとう! – user2448431

関連する問題