我正在尝试按照 tutorial 进行操作,但我无法弄清楚为什么我的
build_debug
和 build_release
是空的,并且当我运行 cmake -DCMAKE_BUILD_TYPE=Debug ../
然后运行 make
时没有编译任何内容
我正在尝试编译以下内容
#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)
和孩子
CMakelists.txt
在src
link_directories(
${GTKMM_LIBRARY_DIRS} )
include_directories(
${GTKMM_INCLUDE_DIRS} )
add_executable(app
main.cpp)
target_link_libraries(app
${GTKMM_LIBRARIES} )
运行后
cmake -DCMAKE_BUILD_TYPE=Debug ../
两个构建文件夹都是空的。目录树如下所示:
.
├── 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
15 directories, 50 files
-B
标志指定构建目录的位置,并使用生成命令的-S
标志指定源目录。
这是文档中的表格,描述了如果您不指定、部分或全部这些标志会发生什么:
命令行 源目录 构建目录 cmake src
src
cwd (现有)cmake build
加载 build
cmake -S src
src
cwd cmake -S src build
src
build
cmake -S src -B build
src
build
cmake -B build
cwd build
cmake -B build src
src
build
cmake -B build -S src
src
build
看到您预先创建了
build_debug/
和 build_release/
,并且您正在使用 -DCMAKE_BUILD_TYPE=...
,仅适用于单配置生成器,您可能打算做的是以下几行(当前工作目录是项目的根目录(包含src/
的目录)):
cmake -S . -B build_debug -DCMAKE_BUILD_TYPE=Debug ...
cmake -S . -B build_release -DCMAKE_BUILD_TYPE=Release ...