创建网站是否困难?探索WordPress的简易步骤
摘要:建网站难吗?,wordpress do_,网站安全建设模板下载,报告长官夫人在捉鬼编译工具:CMake(三)| 最简单的实例升级 前言过程语法解释AD
建网站难吗?,wordpress do_,网站安全建设模板下载,报告长官夫人在捉鬼编译工具#xff1a;CMake#xff08;三#xff09;| 最简单的实例升级 前言过程语法解释ADD_SUBDIRECTORY 指令 如何安装目标文件的安装普通文件的安装#xff1a;非目标文件的可执行程序安装(比如脚本之类)目录的安装 修改 Helloworld 支持安装测试 前言
本篇博客的任务… 编译工具CMake三| 最简单的实例升级 前言过程语法解释ADD_SUBDIRECTORY 指令 如何安装目标文件的安装普通文件的安装非目标文件的可执行程序安装(比如脚本之类)目录的安装 修改 Helloworld 支持安装测试 前言
本篇博客的任务是让前面的 Hello World 更像一个工程我们需要作的是
为工程添加一个子目录 src用来放置工程源代码;添加一个子目录 doc用来放置这个工程的文档 hello.txt在工程目录添加文本文件 COPYRIGHT, README在工程目录添加一个 runhello.sh 脚本用来调用 hello 二进制将构建后的目标文件放入构建目录的 bin 子目录最终安装这些文件将 hello 二进制与 runhello.sh 安装至/usr/bin将 doc 目录的内容以及 COPYRIGHT/README 安装到/usr/share/doc/cmake/test2
过程
在/Compilation_tool/cmake/目录下建立 test2 目录。 将 test1 工程的 main.c 和 CMakeLists.txt 拷贝到 test2 目录中。
添加子目录 src 将main.c文件移动到src文件夹
mkdir src
mv main.c src现在的工程是这个样子 一个子目录 src一个 CMakeLists.txt。 CMake要求为任何子目录建立一个CMakeLists.txt
所以进入src子目录编写CMakeLists.txt如下
ADD_EXECUTABLE(hello main.c)将test2工程的CMakeLists.txt修改为
PROJECT(HELLO)
ADD_SUBDIRECTORY(src bin)然后建立 build 目录进入 build 目录进行外部编译。
mkdir build
cd build
cmake ..
make构建完成后你会发现生成的目标文件 hello 位于 build/bin 目录中。
语法解释
ADD_SUBDIRECTORY 指令
ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
这个指令用于向当前工程添加存放源文件的子目录并可以指定中间二进制和目标二进制存放的位置。
EXCLUDE_FROM_ALL 参数的含义是将这个目录从编译过程中排除比如工程的 example可能就需要工程构建完成后再进入 example 目录单独进行构建(当然也可以通过定义依赖来解决此类问题)。
上面的例子定义了将 src 子目录加入工程并指定编译输出(包含编译中间结果)路径为bin 目录。
如果不进行 bin 目录的指定那么编译结果(包括中间结果)都将存放在build/src 目录(这个目录跟原有的 src 目录对应)
指定 bin 目录后相当于在编译时将 src 重命名为 bin所有的中间结果和目标二进制都将存放在 bin 目录。
换个地方保存目标二进制 ADD_SUBDIRECTORY 指令(不论是否指定编译输出目录)可以通过 SET 指令重新定义EXECUTABLE_OUTPUT_PATH 和 LIBRARY_OUTPUT_PATH 变量来指定最终的目标二进制的位置指最终生成的 hello 或者最终的共享库不包含编译生成 的中间文件
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)projectname_BINARY_DIR 和 PROJECT_BINARY_DIR 变量他们指的编译发生的当前目录如果是内部编译就相当于 PROJECT_SOURCE_DIR 也就是工程代码所在目录如果是外部编译指的是外部编译所在目录也就是本例中的 build 目录。
