cmake包含头文件,c中的乘和除要不要应用头文件cmath

1,c中的乘和除要不要应用头文件cmath不用包含头文件 , 用运算符<<比如一个变量a,将它乘以2后的值赋值给aa <<= 1表示将a的2进制值向左移动1位,即乘以2c++中的乘和除不要应用头文件cmath,math中包含的是sin,cos这类的函数 。基础的操作不用包含【cmake包含头文件,c中的乘和除要不要应用头文件cmath】
2,使用预编译的头文件和CMake问题怎么解决应该是你的板子是用/opt/arm-2010.09.../include/bits编译pc机是用/usr/include/bits编译,在arm上编译的时候前者的头文件内容要和后者一直另外,没有指定目录的情况下cmake是不会去搜寻/opt/目录下的文件夹,看下是哪里写错了!ogre也依赖于一大堆第三方库的 ogitor依赖于ogreboost也是其中的一个第三方库,看红字提示 , 缺少什么库就去下什么库建议新手直接去下sdk 版本老一点没关系,先熟悉一下框架,毕竟ogre已经发展了这么多年 , 一口气吃不了个胖子
3,怎么在cmake的配置文件里加入cmake可以通过让开发者描述build参数在一个简单地可以移植的文本文件里,这个文件能够被cmake用来产生类似于ms visual studio和apples xcode的项目文件 , 当然也有*nix下的makefile 。cmake给同一平台,多机开发环境的很多帮助:自动搜索所需要的程序,库,头文件的能力,这包含了环境变量和windows的注册表等信息能够在源码树外进行build,这个功能在很多unix环境下很有益处 , 这个功能使得开发者可以很轻松的删掉整个build目录,而不会担心误删源码文件创建复杂自定义命令的能力,比如自动生成qt的moc文件等等提供配置选项用于额外的组件 , 比如几个vtk的库是可选的,那么cmake提供选择build哪些库能够从一个简单地text文件自动生成workspace和project文件能够很简单的选择使用静态库还是共享库自动生成文件依赖,并且支持并行build当开发跨平台的软件时 , cmake还能提供其他特性:能够测试平台的字节序和其他硬件特性一整套的build配置文件,能够在多平台上很好地工作支持在多平台上创建共享库最近cmake项目的进展是拥有了软件测试支持——ctest,此外还有个cpack , 是设计用来支持跨平台分发软件的,能够创建本地安装文件,比如可以被nsis,rpm , cygwin等使用 。此外还有支持了xcode和vs10 。加入了交叉编译功能,cmake能够很好地处理host系统和目标系统的区别 。1,依赖CMakeLists.txt文件 , 项目主目标一个,主目录中可指定包含的子目录;2,在项目CMakeLists.txt中使用project指定项目名称,add_subdirectory添加子目录3,子目录CMakeLists.txt将从父目录CMakeLists.txt继承设置(TBD,待检验)在CMakeLists.txt中加入 set(CMAKE_EXE_LINKER_FLAGS "-lpthread -lrt"),解决问题 。
4,如何通过makefile生成cmakeCMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程) 。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性 。只是 CMake 的组态档取名为 CmakeLists.txt 。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 linux 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用 。在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:编写 CmakeLists.txt 。执行命令 “cmake PATH” 或者 “ccmake PATH” 生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 ) 。使用 make 命令进行编译工程实例:一. 编写各层CMakeLists.txt主目录的主程序main.cpp#include "hello.h"extern Hello hello;int main()hello.Print();为一个项目源文件生成makefile并make的步骤如下:操作在包含源文件的项目目录下进行 。(1). 运行autoscan,生成文件configure.scan 。(2). 修改configure.scan , 改名为configure.in 。(3).运行autoheader,生成文件configure.h.in(现在一般改为configure.ac) 。configure.in里有宏ac_config_header()时用 。(4).运行libtoolize,生成一些支持文件 , ltmain.sh 。需要用libtool生成共享库用 。(5).运行allocal , 生成aclocal.m4 。(6). 运行autoconf,生成configure 。(7).为源文件编写makefie.am,每一个包含源文件的目录和子目录都有一个makefile.am 。(8).运行automake,生成makefile.in,每个包含makefile.am的子目录都生成makefile.in 。automake -a选项可以补齐文件config.guess,config.sub,install-sh , missing,depcomp 。(9).运行./configure,生成config.status , config.h,makefile 。(10).运行make , 生成中间文件对象文件,库文件,最后生成可执行文件 。(11).运行make install,相应的可执行文件 , 库文件,头文件拷贝到系统相应位置 。5,如何才能使CMake生成的可执行程序便于调试出现的原因是导入的此makefile工程不是debug模式的 , 所以不包含调试信息,自然不能打断点调试了 。因此,要解决这个问题就要考虑如何修改CMakeLists.txt使其生成的makefile文件进而生成Debug模式下的带调试信息的可执行程序;我们先写一个简单的测试例子来测试一下 , 如何加调试信息:假设文件结构如下:./test6|+ ------ CmakeLists.txt + ------ main.cpp+ ------ src_a|+ ------ CmakeLists.txt+ ------ Testa.h+ ------ Testa.cpp+ ------ src_so|+ ------ CmakeLists.txt+ ------ Testso.h+ ------ Testso.cpp第一步:test6目录下CmakeLists.txtcmake_minimum_required(VERSION 3.3)project(main )add_subdirectory(src_a )// 给当前工程目录添加子目录 src_aadd_subdirectory(src_so )// 给当前工程目录添加子目录 src_soset(CMAKE_CXX_FLAGS_DEBUG "$ENVset(EXECUTABLE_OUTPUT_PATH $ include_directories($ aux_source_directory(. DIR_SRCS )// 将当前目录中的源文件名称赋值给变量 DIR_SRCSadd_executable(main $ target_link_libraries (main Testa Testso)//将库文件链接到生成的目标可执行文件第二步:子目录目录下CmakeLists.txt 1,src_a中静态库的编译生成cmake_minimum_required(VERSION 3.3)//该命令限定了 CMake 的版本set(CMAKE_CXX_FLAGS_DEBUG "$ENVset(LIBRARY_OUTPUT_PATH $ aux_source_directory(. LIBA_SRC)//将当前目录中的源文件名称赋值给变量 LIBA_SRCadd_library(Testad STATIC $ 2,src_so中动态库的编译生成cmake_minimum_required(VERSION 3.3)//该命令限定了 CMake 的版本set(CMAKE_CXX_FLAGS_DEBUG "$ENVset(LIBRARY_OUTPUT_PATH $ aux_source_directory(. LIBSO_SRC)//将当前目录中的源文件名称赋值给变量 LIBA_SRCadd_library(Testsod SHARED $ 此处执行cmake时有两种方式:1 , 在cmake的gui界面中设定生成Debug模式,2,在执行cmake时使用如下命令:cmake -DCMAKE_BUILD_TYPE=Debug/Releasepath关于ccmake的使用 , 这里简单的做个说明:1.首先在终端启动cmake的gui界面:"ccmake ."效果如图:2.然后在gui中输入"c",效果如图:3.然后在gui中输入"e",效果如图:4.此时在gui界面点击"enter"回车键进行编辑:编辑完再次点击回车退出编辑 。5.点击"c",之后再次点击"g" 。此时makefile文件已经生成好了 。make之后生成的可执行文件是带有调试信息的,就可用gdb进行调试了(导入Eclipse也可以进行打断点调试) 。

    推荐阅读