【发布时间】:2016-04-24 03:13:35
【问题描述】:
这是我当前的 CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.3)
set(CMAKE_C_FLAGS " -Wall -g ")
project( bmi )
file( GLOB SRCS *.cpp *.h )
add_executable( bmi ${SRCS})
这是从我的源目录构建的,但之后我必须清理所有额外的文件。我的问题是,如果我的所有源文件都在同一个源目录中,我如何从构建目录构建它?
谢谢
【问题讨论】:
-
如果您不想将可执行文件与源代码混淆,请使用 out-of-source 构建。你可以说得更详细点吗?您究竟想在构建目录中选择哪些文件(举例)?
-
另外,你为什么要将 *.h 添加到源列表中?
-
因为计算 BMI 的程序使用了 main.cpp、bmi.cpp 和 bmi.h 文件,所有这些文件都在源目录中。如果没有 .h 文件,程序将无法运行。我想将这 3 个文件编译成 1 个可执行文件,而不在我的源文件夹中生成所有 cmake 内容。
-
@WillMeyers:这就是为什么您使用源代码之外的构建,以免污染您的源目录。 CMake 自己找出所需的标头。您不需要将它们添加到您的可执行文件中。顺便说一句,使用
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -g "),您的代码将失去用户的额外标志。 -
[33%] 构建 CXX 对象 CMakeFiles/webcam.dir/main.cpp.o /home/devbox/webcam/main.cpp:5:23: error: camera.h: No such file或目录 --devbox@linux-clof:~/webcam> ls --camera.cpp CMakeCache.txt cmake_install.cmake main.cpp camera.h CMakeFiles CMakeLists.txt Makefile 找不到同一目录下的文件!
标签: cmake