2015-05-08 103 views
1

新人到C++和cmake在這裏。我決定測試cLion和cMake。我試圖寫一個簡單的電子郵件客戶端的命令行。其他消息來源告訴我,實現POP3和SMTP功能的最佳方式是使用POCO。不幸的是,cMake給我帶來了麻煩。 CLion附帶的版本是3.2,但我的機器運行的版本是2.8。Clion,cMake和POCO

~$ cmake --version 
cmake version 2.8.12.2 

第一個問題。我認爲我可以通過安裝POCO來避免這種情況,並執行我用於openssl的同樣的事情,而我也必須下載它。

cMakeList.txt:

爲POCO
cmake_minimum_required(VERSION 3.0) 
project(Email_Reader) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

#included paths for openssl and POCO. 

INCLUDE_DIRECTORIES("/usr/include/openssl") 
INCLUDE_DIRECTORIES("/usr/local/include/Poco/Net") 

set(SOURCE_FILES main.cpp) 
add_executable(Email_Reader ${SOURCE_FILES}) 

文檔告訴我,我至少需要3.0工作,但我覺得我有2個不同的CMake的我的機器上。請幫助

+0

我沒有看到你的任何片段的cmake 3.0特定的代碼,因此降低了所需的版本2.8.12貌似值得一試。 – arved

+0

Poco cmake build確實需要3.0版本。但是你也可以在沒有cmake的情況下輕鬆[build](http://pocoproject.org/docs/00200-GettingStarted.html#7)poco。 – Alex

+0

問題是,即時通訊使用CLion,它只支持cMake構建運行。我認爲,既然這是我選擇的IDE,我不妨學習cMake。 – gemini88mill

回答

7

你可以從最新的CMake的版本:http://www.cmake.org/download/

對於Linux,它的這個檔案:http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz

使用它是把解壓後的文件中/opt/cmake/cmake-3.2然後創建下面的一個簡單方法別名(例如,在~/.bash_aliases

alias ccmake3='/opt/cmake/cmake-3.2/bin/ccmake' 
alias cmake3='/opt/cmake/cmake-3.2/bin/cmake' 
alias cmake3-gui='/opt/cmake/cmake-3.2/bin/cmake-gui' 
alias cpack3='/opt/cmake/cmake-3.2/bin/cpack' 
alias ctest3='/opt/cmake/cmake-3.2/bin/ctest' 

然後,請確保你已經正確構建並安裝POCO 的。頁面提供了所需的全部信息。但是,基本上,你應該得到的來源from here和somehwere提取出來:

wget http://pocoproject.org/releases/poco-1.6.0/poco-1.6.0.tar.gz 
tar xvfz poco-1.6.0.tar.gz 
cd poco-1.6.0 
mkdir -p cmake_build cmake_install/debug cmake_install/release 
cd cmake_build 
cmake3-gui .. 

在CMake的3 GUI,按Configure。在新窗口中,保留默認選項Unix Makefiles並點擊Finish。應該出現錯誤信息(這很好),請點擊Ok

要構建Debug版本,設置如下:

CMAKE_BUILD_TYPE  : Debug 
CMAKE_INSTALL_PREFIX : the absolute path to "cmake_install/debug" 

爲了讓您與POCO快速入門,unckeck所有的選項,除了以下,他們必須啓用

ENABLE_JSON 
ENABLE_NET 
ENABLE_UTIL 
ENABLE_XML 
POCO_STATIC 

(你可以以後再考慮其他的選擇,如果你需要...)

退出GUI,然後建立/安裝POCO:

make clean 
make -j8 
make install 

現在,POCO應安裝在cmake_install/debug。要建立/安裝其他版本,只是做了相同的過程,但在CMAKE_BUILD_TYPEReleaseRelWithDebInfoMinSizeRel(參見CMake's doc)取代Debug(也,你必須更改安裝目錄)

最後,可以在你的C++項目中使用POCO。

比如你CMakeLists.txt應該是這樣的:

cmake_minimum_required(VERSION 3.0) 

project(Email_Reader) 

# define the project 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(SOURCE_FILES main.cpp) 
add_executable(Email_Reader ${SOURCE_FILES}) 

# set the POCO paths and libs 
set(POCO_PREFIX  "/path/to/cmake_install/debug") # the directory containing "include" and "lib" 
set(POCO_INCLUDE_DIR "${POCO_PREFIX}/include") 
set(POCO_LIB_DIR  "${POCO_PREFIX}/lib") 
set(POCO_LIBS  "${POCO_LIB_DIR}/libPocoNetd.a" 
        "${POCO_LIB_DIR}/libPocoUtild.a" 
        "${POCO_LIB_DIR}/libPocoJSONd.a" 
        "${POCO_LIB_DIR}/libPocoXMLd.a" 
        "${POCO_LIB_DIR}/libPocoFoundationd.a" 
        "pthread") 

# set the include path for the app 
target_include_directories(Email_Reader PRIVATE "${POCO_INCLUDE_DIR}") 
# link the app against POCO 
target_link_libraries(Email_Reader "${POCO_LIBS}") 
+0

謝謝,幫助我學習基礎知識,多閱讀的時間大聲笑 – gemini88mill

+0

爲什麼你不使用POCO的查找包? –