说明
本文主要记录个人在使用window10使用cmake编译libevent遇到了一点小问题,这里就简单的记录一下,给cmake编译项目不熟悉的朋友一点帮助
环境
操作系统:Win10 编译环境:VS2019 编译代码:libevent-2.1.11-stable (代码请去github取:libevent源码),个人建议,不用最新版本,使用稳定版本,否则可能在使用上遇到了BUG,不好在网上搜搜资料。
步骤
1.在windows环境下安装cmake,这个没什么问题,都是下一步下一步的操作,自行百度 2.安装openssl(libevent依赖openssl),否则在cmake时会遇到错误 ,安装步骤参见安装openssl,推荐第二种方式。 3.将下载的源码解压出来,在主目录下创建一个build文件夹(名字随意,主要是存放编译后的目录) 4.在主目录的cmake目录里添加一个Uninstall.cmake.in,github说明:添加Uninstall.cmake.in,内容如下
if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
endif()
file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
foreach(file ${files})
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
exec_program(
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
OUTPUT_VARIABLE rm_out
RETURN_VALUE rm_retval
)
if(NOT "${rm_retval}" STREQUAL 0)
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
endif()
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
endif()
endforeach()
5.由于我使用的VS2019,相比于前几个版本的VS,还有点差异,这里先说明怎么编译64位的realease和debug,我没有发现怎么编译成32位版本的(使用cmake --help,可以知道编译VS2019需要使用-A参数来编译需要的32位或者64位的,但是我始终没有成功,如果有成功的朋友,可以告诉我一下) (1)编译x64的realease版本:
cmake -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --config Release
(2)编译x64的debug版本:
cmake -G "Visual Studio 16 2019" ..
cmake --build .
注意:使用CMD或者git的时候需要在build(刚创建的)目录下使用以上2句命令,…代表上一级目录,.代表当前目录,cmake是使用CMakeLists.txt来进行编译的,如果目录不对,会找不到该文件。从而无法编译
编译的dll和lib文件都在build相应的目录下。
个人总结
当使用cmake时,不知道要如何编译成自己需要的环境时,可以使用cmake --help查看帮助。 在cmake编译过程中,出现错误时,可以借助日志提示查找错误的原因。
|