Android Studio, CMake.如何在编译时打印调试信息?

17 人关注

我正在使用Android Studio 2.3 beta 3。我把 message(AUTHOR_WARNING "Hello CMake, hello Android") 放在在我的CMakeLists.txt中

但我只在Android Studio中重建项目时看到过几次这样的信息。在大多数情况下,构建完成后,Gradle控制台中没有 "Hello CMake, hello Android" 字符串。我试过重新同步gradle和清理/重建项目,仍然没有预期的输出。

我的构建有一些问题(我认为是路径不正确),所以我的目标是--在编译时打印CMake的变量,以便更好地了解实际情况。

5 个评论
CMake 信息只是一个生成时间(当 CMake 被用来生成你的项目)。说到这里,我没有使用android studio的经验。
好的, CMake 必须生成 Makefile ,但在项目树中我也看不到任何 Makefile
这些都在构建目录中。
在shell/cmd窗口的构建目录中,你应该能够做一个 cmake . 来让CMake生成。这个文件夹里应该有一个 CMakeCache.txt 文件。
谢谢你!这是我所需要的一切!把你的评论作为答案贴出来,这样我就可以接受了。
android
c++
android-studio
cmake
android-gradle-plugin
Alan Kazbekov
Alan Kazbekov
发布于 2017-02-14
4 个回答
goe
goe
发布于 2021-12-09
已采纳
0 人赞同

在项目树中,你可以在每个生成架构的文件夹中找到包含所有cmake输出的日志。该文件的相对路径应该是这样的。

[project folder]/app/.externalNativeBuild/cmake/debug/arm64-v8a/cmake_build_output.txt

这里你可以看到cmake脚本的所有MESSAGE调用。

我可以找到这个文件,但我的信息不在里面。
goe
确保你的MESSAGE调用已经到达。在CMakeList.txt脚本的开头放一个测试MESSAGE,看看它是否在日志文件中。在测试前清除缓存。
我找不到这个文件(Windows 10上的Android Studio 3.2.1)。有CMakeCache.txt和/CMakeFiles/CMakeOutput.log,但都没有包含CMake的输出
goe
我使用linux进行开发,并不真正了解Windows的具体问题。但是,有时CMake脚本未能提前,输出还没有生成。试着简化你的脚本,直到所有的元素都明显正确(甚至应用程序将无法工作),并尝试打印一个消息。这是我的建议。
对于其他任何人来说,"应用程序 "不是指字面意思。
lbsweek
lbsweek
发布于 2021-12-09
0 人赞同

我的android studio cmake输出。

编译细节。

.cxx/cmake/debug/arm64-v8a/compile_commands.json

cmake输出。

.cxx/cmake/debug/arm64-v8a/build_output.txt
    
drescherjm
drescherjm
发布于 2021-12-09
0 人赞同

替换代码0】信息只在生成时(当 CMake 被用来生成你的项目/Makefile)。

CMake 生成的一个方法是,去检索构建文件夹和其中的 CMakeCache.txt 文件,然后。

  • Retrieve the path to your cmake executable, by reading the CMakeCache.txt file and checking the value of the CMAKE_COMMAND variable
  • Open a command prompt in CMakeCache.txt directory
  • Run: <path_to_cmake_found_at_point_1> .
  • 注意:构建文件夹中应该有一个 CMakeCache.txt 文件。除非它有,否则上述内容将无法工作。

    我相信通过这样做,CMake将使用你系统的(默认)编译器,而不是用于交叉编译Android源代码的编译器(Clang)。
    这里的关键是 CMakeCache.txt 文件会有你以前的配置设置,所以它不会切换编译器。
    @NormanPellet 我修改了答案,基本想法非常好。
    CCJ
    CCJ
    发布于 2021-12-09
    0 人赞同

    On my rig I found the logs in <module name>/build/intermediates/cxx/<cmake build type>/<hash>/meta/<ABI>/cmake_server_log.txt -- C++ programming for Android just keeps getting more convenient all the time :\

    My rig:

  • Android Studio Arctic Fox 2020.3.1 Patch 3
  • AGP 7.0.2
  •