标签: cmake

如何在 CMakeLists.txt 中添加新的源文件?

我正在创建一个演示来通过 android NDK 读取和写入文件。我正在使用 CMake 并在我的项目中有 CMakeLists.txt 具有以下内容:

    # For more information about using CMake with Android Studio, read the
    # documentation: https://d.android.com/studio/projects/add-native-code.html

    # Sets the minimum version of CMake required to build the native library.

    cmake_minimum_required(VERSION 3.4.1)

    # Creates and names a library, sets it as either STATIC
    # or SHARED, and provides the relative paths to its source code.
    # You can define multiple libraries, and CMake builds them for you.
    # Gradle automatically packages shared libraries with …
Run Code Online (Sandbox Code Playgroud)

c++ android cmake android-ndk

1
推荐指数
2
解决办法
4218
查看次数

cmake FindBoost 在 Windows 上使用 MinGW 构建时找不到 Boost 库

qtcreator支持qmakecmake跨平台开发,并且 qmake适用于两者msvcMinGW基于Windows. 但是,我更愿意只支持一种工具:cmake.

CMakeLists.txt通过-httplib的工作精细linux,用的时候cmake建立msvcWindows。但是,当使用cmaketo build MinGWon 时Windows,出现以下错误:

C:/Program Files/CMake/share/cmake-3.13/Modules/FindBoost.cmake:2100 处的 CMake 错误(消息):
无法找到请求的 Boost 库。

升压版本:1.69.0

Boost 包含路径:D:/DevLibraries/boost/boost_1_69_0

找不到以下 Boost 库:

      boost_system
Run Code Online (Sandbox Code Playgroud)

没有找到 Boost 库。您可能需要将 BOOST_LIBRARYDIR 设置为包含 Boost 库的目录或将 BOOST_ROOT 设置为 Boost 的位置。

无论是BOOST_LIBRARYDIRBOOST_ROOT环境变量设置和使用时发现Visual Studio 15 2017 Win64发电机和默认本地编译器

该错误消息表明,在使用MinGW Makefiles和默认本机编译器时,cmake …

c++ boost cmake

1
推荐指数
1
解决办法
1541
查看次数

我们可以在签名的 APK 中找到我们的 C++ 代码吗?

我们可以通过使用 Android Studio 分析器对其进行分析来在签名的 APK 中找到我们的 C++ 代码吗?如果我们可以找到 .apk 文件中该文件的路径是什么。

Android Studio 如何在构建应用程序的签名 apk 时打包 C++ 文件?

c++ android cmake android-ndk android-studio

1
推荐指数
1
解决办法
490
查看次数

来自 CMake 的 Emscripten 库无法链接

我在 Windows 10 64 位平台上使用 Grassroot Dicom 查看器版本 2.8.9 编译成 Emscripten 库 bc。

我按照本网站的说明进行操作

emconfigure cmake .
emmake make VERBOSE=1
Run Code Online (Sandbox Code Playgroud)

之后,我得到了以 .a 而不是 .bc 结尾的库文件,类似于

libgdcmcharls.a libgdcmCommon.a libgdcmDICT.a ....

当我查看它开头的每个静态库文件的汇编代码时

!拱。/

代替

公元前

如教程网站中所述注意

使用上述过程,某些构建系统可能无法正确发出位代码,您可能会看到无效的位代码警告。您可以运行 file 来检查文件是否包含位码(您也可以手动检查内容是否以 BC 开头)。还值得运行 emmake make VERBOSE=1 这将打印出它运行的命令 - 您应该看到正在使用 emcc,而不是本机系统编译器。如果不使用 emcc,您可能需要修改 configure 或 cmake 脚本。

我认为这是我无法生成内容以 BC 开头的库的问题,但我得到了!拱 ./ ?

当然这些文件不能从 emcc 链接(找不到参考错误)

error: undefined symbol: _ZN4gdcm11ImageReader8GetImageEv
error: undefined symbol: _ZN4gdcm11ImageReaderC1Ev
error: undefined symbol: _ZN4gdcm11ImageReaderD1Ev
error: undefined symbol: _ZN4gdcm5Trace14GetErrorStreamE
Run Code Online (Sandbox Code Playgroud)

所以我根据 …

c++ makefile cmake emscripten gdcm

1
推荐指数
1
解决办法
1847
查看次数

GCC:对“__asan_init_v1”的未定义引用

我想用标志编译我的 C99 项目-fsanitize=address。我需要使用 CMake 并在 Centos 7 发行版上使用 gcc 进行编译。

我目前有gcc 7.3.1cmake 3.13.4

-fsanitize=address在编译标志列表和链接器中添加了标志,但它仍然无法编译并出现以下错误:

[ 6%] Building C object CMakeFiles/last.dir/src/ast/ast.c.o
[ 13%] Building C object CMakeFiles/last.dir/src/ast/ast_printer.c.o
[ 20%] Building C object CMakeFiles/last.dir/src/ast/cleaner.c.o
[ 26%] Linking C static library liblast.a
[ 26%] Built target last
[ 33%] Building C object CMakeFiles/lexecution.dir/src/execution/exec_parser.c.o
[ 40%] Building C object CMakeFiles/lexecution.dir/src/execution/exec_utils.c.o
[ 46%] Building C object CMakeFiles/lexecution.dir/src/execution/exec_func.c.o
[ 53%] Building C object CMakeFiles/lexecution.dir/src/execution/exec_parser_options.c.o
[ 60%] Linking C …
Run Code Online (Sandbox Code Playgroud)

gcc c99 cmake

1
推荐指数
1
解决办法
3214
查看次数

如何使用关键字签名在 CMake 上链接 opengl 库

我以前将 Visual Studio 与 NuGet 一起用于所有包。现在我改为 CMake。

现在我使用vcpkg来管理库。

但是,我需要 OpenGL

Cmake 链接 freeglut、glew、glm、libpng、zlib 的命令由 vcpkg 提供。但不是 OpenGL。

cmake_minimum_required(VERSION 3.0)
project(little_plane)

set(CMAKE_CXX_STANDARD 14)

add_executable(little_plane main.cpp)

# ./vcpkg install freeglut
find_package(GLUT REQUIRED)
target_link_libraries(little_plane PRIVATE GLUT::GLUT)


## ./vcpkg install glew
#find_package(GLEW REQUIRED)
#target_link_libraries(little_plane PRIVATE GLEW::GLEW)

#
# glm
find_package(glm CONFIG REQUIRED)
target_link_libraries(little_plane PRIVATE glm)

# ./vcpkg install libpng
find_package(PNG REQUIRED)
target_link_libraries(little_plane PRIVATE PNG::PNG)
##

find_package(ZLIB REQUIRED)
target_link_libraries(little_plane PRIVATE ZLIB::ZLIB)

find_package(OpenGL REQUIRED)

if (OPENGL_FOUND)
    message("opengl found")
    message("include dir: ${OPENGL_INCLUDE_DIR}")
    message("link libraries: ${OPENGL_gl_LIBRARY}") …
Run Code Online (Sandbox Code Playgroud)

c++ opengl cmake vcpkg

1
推荐指数
1
解决办法
2247
查看次数

在 CMake 中设置 Clang 库的路径

我从 git 构建 llvm 并想在项目中使用这些库,尤其是 libclang。“makefiles”是通过 CMake 生成的,对于 LLVM 部分,我找到了LLVM_DIR重新路由 llvm 库路径的设置,但是对于 Clang,我找不到这样的变量,我仍然在链接行中看到(它是 Cygwin系统) /usr/lib/libclang.dll.a /usr/lib/libclangTooling.dll.a

问题:我应该设置哪个环境变量来获得正确的构建 Clang 库?

cmake llvm clang llvm-clang

1
推荐指数
1
解决办法
2196
查看次数

用于编译 protobuf 文件的 CMake 目标依赖项

我想从一些protobuf定义中构建一个 c++ 静态库cmake/make
我自定义COMMAND了编译protobufto c++,并将其设置为PRE_BUILD我的静态库的依赖项。

project(mylib)

set(PROTO_PATH "${CMAKE_CURRENT_SOURCE_DIR}/proto_definitions")

file(GLOB PROTO_FILES "${PROTO_PATH}/*.proto")
foreach(PROTO_FILE in ${PROTO_FILES})
    string(REGEX REPLACE "[.]proto$" ".pb.cc" OUTPUT_SOURCE ${PROTO_FILE})
    list(APPEND OUTPUT_SOURCES ${OUTPUT_SOURCE}) 
endforeach()

add_custom_command(TARGET ${PROJECT_NAME}
                   PRE_BUILD
                   COMMAND protoc --cpp_out=${CMAKE_CURRENT_SOURCE_DIR}/compiled_proto ${PROTO_FILES}
                   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
                   COMMENT "some comment")
add_library(${PROJECT_NAME} STATIC ${OUTPUT_SOURCES})

target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})



Run Code Online (Sandbox Code Playgroud)

运行 cmake 时出现以下错误:
CMake 错误:无法确定目标“mylib”的链接语言

不管这个错误,生成文件,但是当我生成 mylib 时,它不会触发任何 proto 编译

cmake protocol-buffers

1
推荐指数
1
解决办法
1408
查看次数

如何在 CMake 中“覆盖”文件的扩展类型

CMake 似乎根据文件的扩展名对文件做出了假设——特别是,用什么来编译源文件。虽然这有时可以使用手动编译器标志覆盖(例如,-x C++用于.c文件),这是依赖于特定的编译器和似乎是绕过这个问题。

有没有办法告诉CMake“将带有扩展名的文件.ext1视为具有扩展名.ext2”?我似乎无法在 CMake 文档中找到类似的内容。

c++ file-extension file-type cmake

1
推荐指数
1
解决办法
424
查看次数

使用 cmake 编译循环时出现问题:找不到 OpenImageIO(缺少:OPENIMAGEIO_LIBRARY OPENIMAGEIO_INCLUDE_DIR)

我想在我的 Ubuntu 18.04 上构建和运行 Cycles 渲染引擎。我确保已安装Cycles 存储库页面 ( https://developer.blender.org/diffusion/C/ ) 上提到的所有关键依赖项。

问题是当我运行 cmake 时,我得到以下输出:

sebastian@sebastian-N551JX:~$ cd Program\ Files/cycles/
sebastian@sebastian-N551JX:~/Program Files/cycles$ cd build
sebastian@sebastian-N551JX:~/Program Files/cycles/build$ cmake ..
CMake Deprecation Warning at CMakeLists.txt:36 (cmake_policy):
  The OLD behavior for policy CMP0043 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the …
Run Code Online (Sandbox Code Playgroud)

ubuntu cmake

1
推荐指数
1
解决办法
2803
查看次数