近期需要将原来使用codelite编译环境的项目转到VS上,因此考虑直接用codelite自动生成的cmakelists来生成VS的项目设置。但是其中很多设置需要修改,记录如下:
- cmake的版本要求
- codelite自动生成的cmakelists中要求最小为2.8.11,因为后面可能用到3.5版本加入的多文件拷贝,因此需改为最小3.6
-
cmake_minimum_required(VERSION 3.6)
- 输出目录设置
- codelite使用了CMAKE_LIBRARY_OUTPUT_DIRECTORY;CMAKE_RUNTIME_OUTPUT_DIRECTORY;CMAKE_ARCHIVE_OUTPUT_DIRECTORY三个输出设置。
- 若在Win+VS中直接使用,会自动在你所设置的目录后面扩展一层 <CONFIG> 目录。因此改为使用CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG
-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CL_OUTPUT_DIRECTORY})
- 编译参数修改
- codelite使用gcc编译器,使用了-g等编译选项
- 换到VS后需删除
- lib库的link
- codelite中link了.a形式的lib库
- VS中link到.lib的库
-
target_link_libraries(MY_SDK_Test ${CMAKE_SOURCE_DIR}/../ThirdParty/gtest/lib/gtest[v140_x64_md_dbg].lib )
- 文件拷贝(post_build)
- codelite可直接使用cp等命令直接进行复制
- VS中建议使用${CMAKE_COMMAND} -E copy_if_different(有差异时复制,支持多文件)
-
file(GLOB dll_files ${CMAKE_SOURCE_DIR}/LIB_SDK/bin/*.dll) ADD_CUSTOM_COMMAND(TARGET MY_SDK_Test POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${dll_files} ${CMAKE_SOURCE_DIR}/bin/ COMMENT "copy dll files" )