gem*_*ill 2 cmake poco-libraries
c ++和cmake这里的新人.我决定测试cLion和cMake.我试图为命令行编写一个简单的电子邮件客户端.其他消息来源告诉我,实现POP3和SMTP功能的最佳方法是使用POCO.不幸的是,cMake给了我麻烦.CLion附带的版本是3.2,但我的机器运行的版本是2.8.
~$ cmake --version
cmake version 2.8.12.2
Run Code Online (Sandbox Code Playgroud)
第一个问题.我认为我可以通过安装POCO并做同样的事情来绕过这个,我也用于openssl,我也必须下载.
cMakeList.txt:
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})
Run Code Online (Sandbox Code Playgroud)
POCO的文档告诉我,我需要至少3.0才能工作,但我觉得我的机器上有2个不同的cMake.请帮忙
您可以从以下网址获取最新的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'
Run Code Online (Sandbox Code Playgroud)
然后,确保您已正确构建并安装了POCO." 入门"页面包含执行此操作所需的所有信息.但是,基本上,你应该从这里获取源并提取它们一些:
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 ..
Run Code Online (Sandbox Code Playgroud)
在CMake 3 GUI中,按Configure.在新窗口中,保留默认选项Unix Makefiles并单击Finish.应出现一条错误消息(没问题),单击Ok.
要构建Debug版本,请设置以下内容:
CMAKE_BUILD_TYPE : Debug
CMAKE_INSTALL_PREFIX : the absolute path to "cmake_install/debug"
Run Code Online (Sandbox Code Playgroud)
为了让您快速开始使用POCO,请取消以下所有选项,除了以下内容之外,还必须启用它们:
ENABLE_JSON
ENABLE_NET
ENABLE_UTIL
ENABLE_XML
POCO_STATIC
Run Code Online (Sandbox Code Playgroud)
(如果需要,您可以稍后考虑其他选项......)
退出GUI,然后构建/安装POCO:
make clean
make -j8
make install
Run Code Online (Sandbox Code Playgroud)
现在,应该安装POCO cmake_install/debug.要建立/安装其他版本,只是做了相同的过程,但替换Debug在CMAKE_BUILD_TYPE用Release,RelWithDebInfo或MinSizeRel(参见CMake的的doc)(也,你必须更改安装目录)
最后,您可以在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}")
Run Code Online (Sandbox Code Playgroud)
我CMakeLists.txt使用 Poco 看起来像这样:
cmake_minimum_required(VERSION 3.10.0)
project(MyProject VERSION 0.1.0)
find_package(Poco REQUIRED COMPONENTS Foundation Net Zip )
add_executable(my_exe main.cpp)
target_link_libraries(my_exe PUBLIC Poco::Foundation Poco::Zip Poco::Net)
Run Code Online (Sandbox Code Playgroud)
此配置会自动添加所需的包含目录和库。该Foundation组件是强制性的,它似乎提供了包含目录。
不要添加Poco到target_link_libraries,链接器将查找“Poco”库。
| 归档时间: |
|
| 查看次数: |
5711 次 |
| 最近记录: |