我現在正在用CMake構建一個動態庫,現在我遇到的問題與爲庫添加文件有關。我的項目結構如下:用CMake添加文件
----src
|
thrid_party---boost_1_50_0----boost
| --- | ----libs
| --- | ---- | --- filesystem
| --- | ---- | --- | ------src
我的CMakeLists.txt文件位於src
目錄,並且是該文件的內容如下:
cmake_minimum_required(VERSION 2.6)
project (temp)
#build the third party library
include_directories(${irisimp_SOURCE_DIR}/../third_party/boost_1_50_0)
set (boost_path
${irisimp_SOURCE_DIR}/../third_party/boost_1_50_0/libs)
set (BOOST_LIST
${boost_path}/filesystem/src/codecvt_error_category.cpp
${boost_path}/filesystem/src/operations.cpp
${boost_path}/filesystem/src/path.cpp
${boost_path}/filesystem/src/path_traits.cpp
${boost_path}/filesystem/src/portability.cpp
${boost_path}/filesystem/src/unique_path.cpp
${boost_path}/filesystem/src/utf8_codecvt_facet.cpp
${boost_path}/filesystem/src/windows_file_codecvt.cpp
${boost_path}/filesystem/src/windows_file_codecvt.hpp
)
add_library (boost SHARED ${BOOST_LIST})
我有沒有問題運行此腳本,但是,輸出Visual Studio 10項目不包含${boost_path}/filesystem/src
文件夾中的所有源文件。實際上只保留了windows_file_codecvt.cpp。因此編譯這個項目將會失敗。我想知道我應該怎麼做才能確保Visual Studio 10項目可以包含所有源文件,如CMakeLists.txt.Thanks中所述!
這一切都很好(除了結構圖中的錯字「thrid」)。我假設列出的Boost.Filesystem文件實際上都存在於您指定的位置。你可以在設置之後嘗試輸出'BOOST_LIST'的內容:'message(「BOOST_LIST:$ {BOOST_LIST}」)',或者你可以獲得'boost'目標的源代碼'get_target_property(BoostSources boost SOURCES)'和輸出:'message(「BoostSources:$ {BoostSources}」)'看看它是否能解決問題。 – Fraser
@Fraser感謝您的建議,它似乎只在我的電腦中失敗,並且如果相同的腳本在另一臺計算機上運行,那就沒有問題。這與我的電腦設置有關,我猜。 – feelfree