执行CMake命令后build_debug、build_release文件夹为空的求助
问题描述
我正在遵循gtkmm的CMake教程,但运行cmake -DCMAKE_BUILD_TYPE=Debug ../并执行make后,build_debug和build_release文件夹是空的,看不到任何编译产物。
我编译的代码如下:
#include <gtkmm.h> int main(int argc, char * argv[]) { auto app = Gtk::Application::create("org.gtkmm.example"); return 0; }
父目录下的CMakeLists.txt内容:
cmake_minimum_required(VERSION 3.26) project(exmaple) find_package(PkgConfig) pkg_check_modules(GTKMM gtkmm-4.0) add_subdirectory(src)
src子目录下的CMakeLists.txt内容:
link_directories( ${GTKMM_LIBRARY_DIRS} ) include_directories( ${GTKMM_INCLUDE_DIRS} ) add_executable(app main.cpp) target_link_libraries(app ${GTKMM_LIBRARIES} )
运行命令后,两个build文件夹均为空,当前目录结构如下:
. ├── build_debug ├── build_release ├── CMakeCache.txt ├── CMakeFiles │ ├── 3.26.1 │ │ ├── CMakeCCompiler.cmake │ │ ├── CMakeCXXCompiler.cmake │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ ├── CMakeSystem.cmake │ │ ├── CompilerIdC │ │ │ ├── a.out │ │ │ ├── CMakeCCompilerId.c │ │ │ └── tmp │ │ └── CompilerIdCXX │ │ ├── a.out │ │ ├── CMakeCXXCompilerId.cpp │ │ └── tmp │ ├── app.dir │ │ ├── build.make │ │ ├── cmake_clean.cmake │ │ ├── compiler_depend.internal │ │ ├── compiler_depend.make │ │ ├── compiler_depend.ts │ │ ├── DependInfo.cmake │ │ ├── depend.make │ │ ├── flags.make │ │ ├── link.txt │ │ ├── progress.make │ │ └── src │ │ ├── main.cpp.o │ │ └── main.cpp.o.d │ ├── cmake.check_cache │ ├── CMakeConfigureLog.yaml │ ├── CMakeDirectoryInformation.cmake │ ├── Makefile2 │ ├── Makefile.cmake │ ├── pkgRedirects │ ├── progress.marks │ └── TargetDirectories.txt ├── cmake_install.cmake ├── CMakeLists.txt ├── Makefile └── src ├── app ├── CMakeFiles │ ├── app.dir │ │ ├── build.make │ │ ├── cmake_clean.cmake │ │ ├── compiler_depend.make │ │ ├── compiler_depend.ts │ │ ├── DependInfo.cmake │ │ ├── depend.make │ │ ├── flags.make │ │ ├── link.txt │ │ ├── main.cpp.o │ │ ├── main.cpp.o.d │ │ └── progress.make │ ├── CMakeDirectoryInformation.cmake │ └── progress.marks ├── cmake_install.cmake ├── CMakeLists.txt ├── main.cpp └── Makefile
问题原因与解决方法
从目录结构能看出,你没有在build_debug或build_release目录内执行cmake命令,而是直接在项目根目录运行了命令,导致CMake生成的构建文件、编译产物都跑到了根目录和src目录下,build文件夹自然为空。
正确的操作步骤应为:
- 针对Debug版本:
cd build_debug cmake -DCMAKE_BUILD_TYPE=Debug ../ make - 针对Release版本:
cd build_release cmake -DCMAKE_BUILD_TYPE=Release ../ make
执行后编译产物会生成在对应的build目录中。
另外注意父目录CMakeLists里的项目名拼写错误:project(exmaple)应为project(example),虽不影响编译,但建议修正以保证规范。
内容的提问来源于stack exchange,提问作者binary_psychic
相关产品推荐
相关产品推荐

