目标:要使得lightssd文件夹中可以在CMake下正确的编译,源程序是没有错误的,是CMakeLists.txt这个文件存在部分错误。
先看看文件的框架:
./lightssdp
|-CMakeFiles
|-include/
|-4个后缀为.h的文件
|-sample/
|-Makefile
|-ssdp_clie.c
|-src/
|-Makefile
|-各种后缀为.o、.c、.h文件
|-CMakeCache.txt
|-cmake_install.cmake
|-CMakeLists.txt
|-Makefile
|-Makefile.cfg
再看看主目录对应的CMakeFiles后就准备着手改了。
在修改之前看一下各种语法的介绍吧:
一、关键字
PROJECT关键字
可以用来指定工程的名字和支持的语言,默认支持所有语言。
PROJECT(HELLO) 指定了工程的名字,并且支持所有语言(常用)
PROJECT(HELLO CXX) 指定了工程语言为C++以及提及了工程名字
PROJECT(HELOO C CXX) 指定了工程的名字,并且支持名字是C和C++
该指定会生成两个CMake的变量,分别是:
${PROJECT_NAME}_ BINARY _ DIR(在本例中是LIGHTSSDP_BINARY_DIR)
${PROJECT_NAME}_SOURCE_DIR(在本例中是LIGHTSSDP _ SOURCE _ DIR)
使用MESSAGE关键字就可以直接使用两个变量,当前都指向当前的工作目录。
MESSAGE(STATUS "This is BINARY dir:" ${LIGHTSSDP_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir:" ${LIGHTSSDP_SOURCE_DIR})
使用这个的问题在于是,他会随着文件的名字改变而改变这个两个变量名。
解决方法:定义变量PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR,这两个变量和LIGHTSSDP_BINARY_DIR、LIGHTSSDP_SOURCE_DIR是一致的,在改变名字的时候他不会改变。
SET关键字
用来显示指定的变量的。
SET(SRC_LILST main.c) 那么SRC_LILST变量就包含了main.c。也可以在括号里面加很多的.c文件。
MESSAGE关键字
向终端输出用户自定义的信息。
主要包含三种信息:
-
SEND_ERROR:产生错误,生成过程被跳过。
-
SATUS:输出前缀为-的信息,就像我们在终端中打入make一样,会产生前缀为--的信息。
-
FATAL_ERROR:立即终止所有cmake过程。
ADD_EXECUTABLE关键字

最低0.47元/天 解锁文章
471

被折叠的 条评论
为什么被折叠?



