SET指令的语法:SET(VAR[VALUE] [CACHE TYPE DOCSTRING [FORCE]]) Set指令是用来显式的定义变量的 , 我们之前用到的是SET(SRC_LIST main.cpp)如果有多个源文件 , 也可以定义成SET(SRC_LISTmain.cpp t1.cpp t2.cpp) 。MESSAGE指令的语法是:MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR]"message to display"。
) 这个指令用于向终端输出用户信息 , 包含三种类型:SEND_ERROR , 产生错误 , 生成过程被跳过 。SATUS , 输出前缀为-的信息 。
FATAL_ERROR , 立即终止所有cmake过程 。我们在这里使用的是STATUS信息输出 , 显示了由PROJECT指令顶一顶两个饮食变量HELLO_BINARY_DIR和HELLO_SOURCE_DIR 。
ADD_EXECUTABLE(hello ${SRC_LIST}) 定义了这个工程会生成一个文件名为hello的可执行文件 , 相关的源文件是SRC_LIST中定义的源文件列表 , 本例中你可以直接写成ADD_EXECUTABLE(hellomain.c) 。将本例改写成一个最简化的CMakeLists.txt:PROJECT(HELLO) ADD_EXECUTABLE(hello main.c) 下面我们介绍一个比较实用的例子 , 即包含生成静态库又包含引入外部头文件和链接库的cmakedemo 。
先按照工程规范建立工程目录 , 并编写代码 , 以下面的工程目录为例进行解释这个例子 , 工程的目录结构为:编译工程要实现的目标:1. 添加子目录doc , 用以放置这个工程的文档hello.txt2. 生成hello的静态库 , 并在main可执行程序链接hello静态库3. 在这个工程中添加COPYRIGHT,README4. 在工程目录中添加一个run.sh的脚本 , 用以调用生成的二进制可执行文件5. 将生成的二进制文件生成到bin子目录中6. 编写安装程序1. 编写CMakeLists.txt 由于一个工程目录中包含多个项目 , 其中在此项目中包含util项目和main项目 , 其中util项目是用以生成main程序需要的静态库 , main是用以生成可执行文件 。在工程项目中的父目录向有一个CMakeLists.txt是用以声明定义工程需要的Cmake设置还定义了子目录src , 用以递归的调用src中的MakeLists.txt 。
其中工程目录的CMakeLists.txt内容定义如下:PROJECT(HELLO) ADD_SUBDIRECTORY(src) 在src里面的CMakeLists.txt是用以定义src目录包含的两个工程的依赖关系分别进行编译 。util目录里面的CMakeLists.txt是用以定义生成util静态库的规则 , 其中内容如下:SET(LIBRARY_OUTPUT_PATH ${HELLO_SOURCE_DIR}/lib) SET(CMAKE_C_COMPILER g++) SET(SRC_LIST hello.c) INCLUDE_DIRECTORIES(${HELLO_SOURCE_DIR}/include) ADD_LIBRARY(util STATIC ${SRC_LIST}) 其中SET(LIBRARY_OUTPUT_PATH ${HELLO_SOURCE_DIR}/lib)定义了库生成的路径 , LIBRARY_OUTPUT_PATH是一个内部变量 , 存放库生成路径 。
SET(SRC_LIST hello.c)是用来定义库文件需要的源文件 。INCLUDE_DIRECTORIES(${HELLO_SOURCE_DIR}/include)是用来定义非标准库头文件要搜索的 。
6.编写一个实现Hello World简单显示功能的Makefile文件#########################################################
.suffixes:.c
.suffixes:.o
.c.o:
gcc -o -c $#########################################################
os=unix
workdir=$(home)
makefile = makefile
incl=$(workdir)
lib =
obj=mytest.o
all: mytest
@echo " "
@echo " 编译成功! "
@echo " "
@echo " "
mytest: $(obj)
@echo "compiling 。"
@gcc -o [email protected] $(obj) $(lib)
@rm *.o
@echo " "
7.怎样用 vim 编写 Java?你得先装好JDK , 什么系统乌班图吗?
先下个JDK,linux版本的JDK貌似是解压即使用的 , 然后设置系统路径 , 最后JAVA-VISION看一下
给你个参考地址
- friend的音标怎么写
- 致的笔画顺序怎么写的
- 运城市英文怎么写
- 淘宝刷单申诉怎么写
- 土地的地笔画怎么写
- 说话jue人的jue怎么写
- 勤字甲骨文怎么写
- j在三线格里怎么写
- js搜索框验证代码怎么写
- scolded音标怎么写