CmakeLists相关tips
Cmake中获取当前工程的目录
CMAKE_SOURCE_DIR确实是指定义了顶级CMakeLists.txt的文件夹.但是, PROJECT_SOURCE_DIR是指包含最近的project()命令的CMakeLists.txt的文件夹
假设有一个名为Outer的顶级项目,它包含一个子目录,其自己的项目叫做Inner.外面的CMakeLists.txt有:
project(Outer)
add_subdirectory(Inner)
和内在的:
project(Inner)
然后在这两个CMakeLists文件中,CMAKE_SOURCE_DIR将引用Outer的源目录.但是外部PROJECT_SOURCE_DIR也是同一个目录,而Inner并不是这样. Inner的PROJECT_SOURCE_DIR是包含其CMakeLists.txt的子目录.
Cmake中添加宏定义
CMake 中标准的添加宏定义方法是使用 ADD_DEFINITIONS(-DPROJECT_PATH) ,不过这需要修改 CMakeLists.txt 文件。如果想要在命令行上定制宏的开关或取值,那么可以像 这里 一样,定义一个 CMake 选项:
OPTION(DEFINE_A "Option description" ON) # Enabled by default
然后做一个条件判断:
IF(DEFINE_A)
ADD_DEFINITIONS(-DA)
ENDIF(DEFINE_A)
之后,就可以用 cmake -DDEFINE_A=OFF .. 调整宏的开关或取值了
add_definitions(-DPROJECT_PATH="${PROJECT_SOURCE_DIR}")
在CPP中可以直接通过获取到工程的目录
string path = (std::string)PROJECT_PATH;

浙公网安备 33010602011771号