1、项目地址
https://github.com/viticm/plain
每次将地址放出来,感觉像是为自己的孩子做宣传,真的是可怜天下父母心。虽然这个孩子看起来实在太平庸了,可是我想说的是它还是有一定潜力的,至少在大多数的网络应用中都能够很好地发挥其作用。核心的框架并没有过多依赖,只需要依赖于标准的C/C++库即可,目前支持的语法为C++11。
核心的模块:基础(basic)、网络(net)、文件(file)、系统(system)、数据库(database)、脚本(script)
具体的我不再这里描述了,我之前对这个项目写过一些较为详细的介绍(估计也不够详细大家将就看吧)。
2、windows下的cmake
接下来开始上主菜,一切都源于这张图:
如果没有更改VS中默认的设置,那么它在打开文件夹时会自动识别目录下的CMakelist.txt,然后你就会发现这个页面了。它的目的是为提醒我们进行cmake相关的设置,有点像是游戏里面的引导功能,在IDE里微软的VS还是很注重用户体验的。虽然它出现了这个页面,但在跨平台开发的时候我仍然习惯于直接到相应的系统下直接开发,者或许是因为还没有真正体验到一个IDE跨平台开发的乐趣吧。但为了更好的开发编译,最近半个月时间几乎对于项目的维护都在了CMake这里,可以看到提交最多的注释为Update cmake。
plain下面的CMakelist(根目录cmake/CMakelist.txt)
# Copyright 2017 Viticm. All rights reserved. # # Licensed under the MIT License(the "License"); # you may not use this file except in compliance with the License. # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. cmake_minimum_required(VERSION 2.8.12) set(PROJECT_NAME PlainFramework) set(PF_VERSION 1.1.0) set(PROJECT_DESC "Plain framework, based on c++ for net applictions") if (CMAKE_VERSION VERSION_LESS 3.0) project(PlainFramework CXX C) else() cmake_policy(SET CMP0048 NEW) cmake_policy(SET CMP0037 NEW) project(PlainFramework VERSION ${PF_VERSION} LANGUAGES CXX C) endif() # Call fplutil to get locations of dependencies and set common build settings. include("inc/find_fplutil.cmake") include("inc/common.cmake") include("inc/internal_utils.cmake") if (NOT dependencies_gtest_dir) set(dependencies_gtest_dir ${root_dir}/dependencies/googletest/googletest) endif() if (NOT has_output_path) # This is the directory into which the executables are built. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${root_dir}/plain/bin) # This is the directory into which the librarys are built. set(LIBRARY_OUTPUT_PATH ${root_dir}/plain/lib) set(has_output_path 1) endif() #For utf8 no boom. if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4819") endif() # Options that control the build configuration. # To configure PlainFramework flags per build target, see the # plainframework_configure_flags() function. option(plainframework_build_tests "Build PlainFramework unit tests." ON) # Build plain framework plugins. option(plainframework_build_plugins "Build PlainFramework plugins" ON) file(GLOB_RECURSE PLAINFRAMEWORK_HEADERS ${CMAKE_CURRENT_LIST_DIR}/framework/core/include *.h) set(VERSION_RC ${root_dir}/cmake/inc/version.rc.in) add_subdir(${plainframework_dir}/cmake plainframework plainframework) # Plugins. if (plainframework_build_plugins) add_subdir(${root_dir}/plain/plugins/cmake plugins plainframework) endif() if(plainframework_build_tests) add_subdir(${root_dir}/framework/unit_tests/cmake ${root_dir}/framework/unit_tests/cmake/build plainframework) if (NOT plainframework_no_app) add_subdir(${root_dir}/plain/app/cmake ${root_dir}/plain/app/cmake/build plainframework) endif() endif()
01-22 08:00