2016-01-03 105 views
2

cmake的headerfile boost.hpp我喜歡用的cmake包括與cmake的

添加boost/operators.hpp從CMake的的FindBoost文檔:

find_package(Boost 1.36.0) 
if(Boost_FOUND) 
    include_directories(${Boost_INCLUDE_DIRS}) 
    add_executable(foo foo.cc) 
endif() 

所以我添加

從消息
find_package(Boost 1.60.0) 
if (Boost_FOUND) 
    include_directories(${Boost_INCLUDE_DIRS}) 

    add_library(core ${core_SRCS}) 
    add_executable(app main.cpp) 
    target_link_libraries(app core) 

endif() 

輸出:

-- Boost version: 1.60.0 
-- BOOST_ROOT=~/Projects/ClionProjects/.repo/boost_1_60_0 
-- Boost_DIR=Boost_DIR-NOTFOUND 
-- Boost_INCLUDE_DIR=/home/dornathal/Projects/ClionProjects/.repo/boost_1_60_0 

然而,它構建(我可以運行程序和測試),但只要我嘗試包含#include<boost/operators.hpp>它不會在測試項目中找到它。

我實際上是由boost::operators<T>擴展一個類,並奇怪我的IDE(克利翁)讓我跳到那個的資源文件。

+0

'operations.hpp'與'operators.hpp'不一樣。 – juanchopanza

+0

好了解決了我的發帖當然包括 – Dornathal

+2

時我使用了operators.hpp當然沒有關於它的「當然」。我們無法閱讀您的真實代碼。 – juanchopanza

回答

0

include_directories CMake命令添加包含當前目錄及其子目錄的目錄。由於你的錯誤的測試項目,並在主要項目中使用include_directories,我想這個問題是,你必須對這些單獨的目錄,例如:

src/ 
    CMakeLists.txt - include_directories used here 
test/ 
    test.cc - no effect on this file 

如果是這樣,你可以移動include_directories的情況下直到他們的共同父目錄或使用target_include_directories可以傳播公衆INCLUDE_DIRECTORIES財產。

你也可以通過添加VERBOSE=1你make命令看到傳遞給你的編譯器的命令:

make VERBOSE=1 

這顯示了包括目錄都可以通過除其他外-I...選項傳遞到編譯器。