当前位置: 首页 > news >正文

金泉网做的山东黄锈石网站有哪些vs2017 做c 网站

金泉网做的山东黄锈石网站有哪些,vs2017 做c 网站,基础建设工程,网站备案当面核验拍摄照片文章目录安装与配置编译单个源文件编译前的准备开始编译编译多个源文件多个源文件在同一目录下多个源文件在不同目录下math 目录下的 CMakeLists.txt根目录的 CMakeLists.txtoption 选项导入外部库本地导入#xff08;find_package#xff09;外部导入#xff08;FetchConte… 文章目录安装与配置编译单个源文件编译前的准备开始编译编译多个源文件多个源文件在同一目录下多个源文件在不同目录下math 目录下的 CMakeLists.txt根目录的 CMakeLists.txtoption 选项导入外部库本地导入find_package外部导入FetchContent安装与测试安装测试生成安装包安装与配置 进入 官网下载 dmg 文件 在红圈中根据自己的Mac版本任选一个 dmg 下载 安装完成后从菜单栏选择Tools–How to Install For Command Line Use 在终端命令行中输入弹出弹窗中第二项 to install symlinks to /usr/local/bin, run: 的指令 检查是否配置成功 cmake --version 可以正常识别配置成功。 编译单个源文件 编译前的准备 使用 CMake 进行编译之前需要具备三大内容 他们的作用及内容如下 源文件 main.cpp #include iostreamint main(int argc, const char * argv[]) {// insert code here...std::cout Hello, World!\n;return 0; }cmake 构建规则 CMakeLists.txt CMAKE_MINIMUM_REQUIRED(VERSION 2.6) # cmake最低版本需求不加入此行会受到警告信息PROJECT(HELLO) # 项目名称同时会自动生成 PROJECT_NAME 变量 # 使用${PROJECT_NAME} 即可访问到 hello_cmake。AUX_SOURCE_DIRECTORY(. SRC_LIST) # 把当前目录(.)下所有源代码文件和头文件加入变量SRC_LISTADD_EXECUTABLE(hello ${SRC_LIST}) # 生成应用程序 hello在编译单个文件时也可以不添加第三句规则而是直接在第四句规则中指定编译的文件例如删除第三句并将第四句改为如下内容本编译规则依然有效 ADD_EXECUTABLE(hello main.cpp) #生成应用程序 helloAUX_SOURCE_DIRECTORY 第一个参数是目录的路径第二个参数是变量名。当我们使用这个命令时就会将指定目录下的所有源文件保存到指定的变量名中。这里将名为 main.cpp 的源文件编译成一个名称为 hello 的可执行文件。 保存临时构建文件和目标文件的文件夹 build。 本示例中该步骤本质上是创建一个可以位于文件系统上任何位置的构建文件夹这里只是选择了在当前文件夹中创建。 所有临时构建和目标文件都位于此目录中以保持源代码树的整洁。该种构建方式为外部构建。其实也可以没有这个文件夹而是以内部构建的形式直接在源文件目录构建项目只是会导致临时文件和源代码放在一起不好清理。 开始编译 通过 cmake .. 命令开始进行编译 使用 cmake 生成的 makefile 编译得到可执行文件 此时在当前目录下就会生成可执行文件 hello。 将其运行查看是否成功编译 编译多个源文件 多个源文件在同一目录下 与编译单个源文件相比难点主要是对 AUX_SOURCE_DIRECTORY 命令的使用。 如果不想使用 AUX_SOURCE_DIRECTORY 命令也可以使用 set 来手动将多个源文件保存到变量名中 set(SRC_LISTother.cppmain.cpp )多个源文件在不同目录下 . ├── CMakeLists.txt ├── main.cc └── math├── CMakeLists.txt├── MathFunctions.cc└── MathFunctions.h在多个目录下有着多个源文件的情况下需要在每个目录中都编写一个 CMakeLists.txt。这里为了方便我们可以将 math 里的文件编译为一个静态库再通过 main 函数调用。 math 目录下的 CMakeLists.txt math 目录下的 CMakeLists.txt 主要做的事是将当前目录下的文件编译为一个静态库 # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_LIB_SRCS 变量 aux_source_directory(. DIR_LIB_SRCS)# 指定生成 MathFunctions 链接库 add_library (MathFunctions ${DIR_LIB_SRCS})add_library用于从某些源文件创建一个库默认生成在构建文件夹。 第一个参数为库名不需要 lib 前缀会自动添加第二个参数用于指定 SHARED动态库、STATIC静态库如果不写则通过全局的 BUILD_SHARED_LIBS 的 FALSE 或 TRUE 来指定。上例中就没有写第三个参数即为源文件列表。 根目录的 CMakeLists.txt # CMake 最低版本号要求 cmake_minimum_required (VERSION 2.8)# 项目信息 project (Demo3)# 查找目录下的所有源文件 # 并将名称保存到 DIR_SRCS 变量 aux_source_directory(. DIR_SRCS)# 添加 math 子目录 add_subdirectory(math)# 指定生成目标 add_executable(Demo ${DIR_SRCS})# 添加链接库 target_link_libraries(Demo MathFunctions)add_subdirectory用于表示该项目包含一个子目录此时会去处理子目录下的 CMakeLists.txt 与源文件。target_link_libraries该命令用于指明可执行文件 Demo 需要链接 MathFunctions 库。 第一个参数为可执行文件名第二个参数为访问权限PUBLIC、PRIVATE、INTERFACE默认为 PUBLIC第三个参数为库名这里库名使用了 math 目录下的 CMakeLists.txt 中生成的 MathFunctions 链接库【后两个参数可以为多个】 option 选项 面对 库文件很大 或者 库文件依赖第三方库 的时候我们可能希望将 该库文件作为一个可选项而不是非得链接不可。 这里仍以 MathFunctions 为例进行实现。首先在 顶层CMakeLists.txt 文件添加一个选项 option 其基本格式如下 option (USE_MYMATH should we use our own math functions ON) 第一个参数定义选项名称。第二个参数说明选项的含义。第三个参数定义选项默认状态一般是 OFF 或者 ON除去 ON 之外其他所有值都被认为是 OFF。 接下来就是将构建和连接 MathFunctions 设置为可选项。修改 顶层CMakeLists.txt 文件如下所示 if (USE_MYMATH)include_directories (${PROJECT_SOURCE_DIR}/MathFunctions)add_subdirectory (math)# 将 ${EXTRA_LIBS} 变量中旧有的内容和 MathFunctions # 都加入到EXTRA_LIBS变量中set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions) endif (USE_MYMATH)# add the executable add_executable(Demo ${DIR_SRCS}) target_link_libraries(Demo ${EXTRA_LIBS})PS 这里我们使用了 USE_MYMATH 这个宏倘若在源码中也想使用它那么需要由 CMake 通过在配置文件 Config.h 添加以下代码 #cmakedefine USE_MYMATH之后源码 include 该头文件Config.h来实现。 导入外部库 本地导入find_package 本节示例的目录结构如下 . ├── CMakeLists.txt ├── main.cpp └── README.adoc以 boost 为例演示如何导入一个本地的第三方库 MakeLists.txt 内容如下 cmake_minimum_required(VERSION 3.5)# Set the project name project (third_party_include) # 使用库文件系统和系统查找 boost install # 注意这是第三方库而不是自己生成的静态动态库 find_package(Boost 1.46.1 REQUIRED COMPONENTS filesystem system) if(Boost_FOUND)message (boost found) else()message (FATAL_ERROR Cannot find Boost) endif()# Add an executable add_executable(third_party_include main.cpp)# link against the boost libraries target_link_libraries( third_party_includePRIVATEBoost::filesystem )使用 find_package 命令来在本地搜索对应的第三方库它的参数的含义如下 Boost 代表需要查询的库名称1.46.1 代表需要库的最低版本REQUIRED 表示该库是必须的如果找不到会报错COMPONENTS 用于检测该库的对应组件是否存在如果不存在则认为找到的库不满足条件。filesystem 和 system 代表搜索的位置分别是 库文件系统 和 文件系统。 外部导入FetchContent FetchContent 是 3.11.0 版本开始提供的功能只需要一个 URL 或者 Git 仓库即可引入一个库这里以 GoogleTest 库为例 cmake_minimum_required(VERSION 3.14) project(my_project)# GoogleTest requires at least C11 set(CMAKE_CXX_STANDARD 11)include(FetchContent) FetchContent_Declare(googletestURL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip ) # 对于Windows防止重写父项目的编译器/链接器设置 set(gtest_force_shared_crt ON CACHE BOOL FORCE) FetchContent_MakeAvailable(googletest)include(FetchContent) 表示引入 FetchContent。FetchContent_Declare(第三方库) 获取第三方库可以是一个 URL 或者一个 Git 仓库。FetchContent_MakeAvailable(第三方库) 将这个第三方库引入项目。target_link_libraries(主项目 PRIVATE 子模块::子模块) 链接这个第三方库。 安装与测试 安装 示例的目录结构如下 . ├── CMakeLists.txt ├── config.h.in ├── License.txt ├── main.cc └── math├── CMakeLists.txt├── MathFunctions.cc└── MathFunctions.hmath 目录下的 CMakeLists.txt # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_LIB_SRCS 变量 aux_source_directory(. DIR_LIB_SRCS)# 指定生成 MathFunctions 链接库 add_library (MathFunctions ${DIR_LIB_SRCS})# 指定 MathFunctions 库的安装路径 install (TARGETS MathFunctions DESTINATION lib) install (FILES MathFunctions.h DESTINATION include)通过 install 命令 将静态库 MathFunctions 安装到 /usr/local/lib 目录下将头文件 MathFunctions.h 安装到 /usr/local/include 目录下。 根目录 下的 CMakeLists.txt 中的 install 内容 # 指定安装路径 install (TARGETS Demo DESTINATION bin) install (FILES ${PROJECT_BINARY_DIR}/config.hDESTINATION include)将可执行程序 Demo 安装到了 /usr/local/lib 目录下将头文件 config.h 安装到 /usr/local/lib 目录下。 PS/usr/local/ 是默认安装的根目录可以通过修改 CMAKE_INSTALL_PREFIX 变量来指定文件安装文件的根目录。 测试 CMake 提供了一个名为 CTest 的测试工具。它通过 add_test 命令来进行相关测试项目根目录的 CMakeLists.txt 文件中的 add_test 命令内容如下 # 启用测试 enable_testing()# 测试程序是否成功运行 add_test (test_run Demo 5 2)# 测试帮助信息是否可以正常提示 add_test (test_usage Demo) set_tests_properties (test_usagePROPERTIES PASS_REGULAR_EXPRESSION Usage: .* base exponent)# 测试 5 的平方 # add_test (test_5_2 Demo 5 2)# set_tests_properties (test_5_2 # PROPERTIES PASS_REGULAR_EXPRESSION is 25)# 测试 10 的 5 次方 # add_test (test_10_5 Demo 10 5)# set_tests_properties (test_10_5 # PROPERTIES PASS_REGULAR_EXPRESSION is 100000)# 测试 2 的 10 次方 # add_test (test_2_10 Demo 2 10)# set_tests_properties (test_2_10 # PROPERTIES PASS_REGULAR_EXPRESSION is 1024)# 如果觉得上述过程过于复杂 # 也可以定义一个宏用来简化测试工作 macro (do_test arg1 arg2 result)add_test (test_${arg1}_${arg2} Demo ${arg1} ${arg2})set_tests_properties (test_${arg1}_${arg2}PROPERTIES PASS_REGULAR_EXPRESSION ${result}) endmacro (do_test)# 利用 do_test 宏测试一系列数据 do_test (5 2 is 25) do_test (10 5 is 100000) do_test (2 10 is 1024)enable_testing用于启动测试。add_test用于添加测试 第一个参数为测试名第二个参数为可执行程序剩下的为可执行程序的参数。 set_tests_properties测试的提示信息。PASS_REGULAR_EXPRESSION 测试属性正则表达式来验证输出中是否包含了特定的字符串。这里验证开方是否正确并且在计算错误时输出输出对应信息。macro宏用于编写一个重复性操作来简化测试用例的编写。do_test编写的测试宏。 生成安装包 如果想要生成安装包则需要使用 CMake 提供的打包工具 CPack。此时需要在 CMakeLists.txt 中添加以下内容 # 构建一个 CPack 安装包 include (InstallRequiredSystemLibraries) set (CPACK_RESOURCE_FILE_LICENSE${CMAKE_CURRENT_SOURCE_DIR}/License.txt) set (CPACK_PACKAGE_VERSION_MAJOR ${Demo_VERSION_MAJOR}) set (CPACK_PACKAGE_VERSION_MINOR ${Demo_VERSION_MINOR}) include (CPack)include (InstallRequiredSystemLibraries)导入 InstallRequiredSystemLibraries 模块。设置一些 CPack 相关变量。include (CPack)导入 CPack 模块。 接着执行 cmake 和 make 构建工程此时再执行 cpack 命令即可生成安装包 #生成二进制安装包 cpack -C CPackConfig.cmake#生成源码安装包 cpack -C CPackSourceConfig.cmake当命令执行成功后就会在当前目录下生成 *.sh、*.tar.gz、*.tar.Z 这三个格式的安装包。
http://www.sadfv.cn/news/66534/

相关文章:

  • 商务卫士包括网站建设重庆招聘网站哪个好
  • 网站怎样做免费优化有效果用什么软件做网站布局
  • 徐州沛县网站建设宁波网站制作设计
  • 专注扬中网站建设关键词竞价广告
  • 天津专门做网站的公司网站底部悬浮代码wordpress
  • 如何制作自己的公司内部网站多个域名指定同一个网站好处
  • 哪里有网站制作服务如何注销网站域名
  • 兼职网站建设黑客以网站做跳板入侵方法
  • 西安建设学院网站首页外贸简单网站建设
  • 内推网站敏感词过滤wordpress
  • 有私人做网站的吗景德镇网站制作公司
  • 商城网站建设软件没有有知道钓鱼网站在哪儿做
  • 大连网站开发 选领超科技中国建设人才网服务信息网
  • 网站建设到那可以学习无锡科技网站建设
  • 2万块建一个网站贵吗启业网查询官网
  • mc做弊端网站外部网站可以做链接到淘宝吗
  • 免费网站技术傻瓜式建站软件下载
  • 设计商标的网站网站建设现况分析
  • 合作建站方案微信seo什么意思
  • 网站开发工具推荐广水市建设局网站
  • 响应式网站建站intellij idea做网站
  • 下瓦房做网站公司扬州网站建设兼职
  • 外贸响应式网站设计个人设计作品集
  • 大理网站制作公司打赏网站开发
  • 安顺市住房和城乡建设局网站广州番禺专业做网站
  • 公司做网站计入什么科目如何创建自己的app平台
  • 贺州网站建设公司网站项目ppt怎么做
  • 个人网站开发 怎么赚钱吗梧州论坛看点
  • 江阴市做网站的莱芜网站优化公司
  • 建网站公司专业做网站联系电话