如果我在OBJECT中指定了CMake库的依赖链,则目标可执行文件中只使用最后一个库的target_link_libraries依赖项。
最起码的例子:
main依赖于objB,而后者依赖于objA。objA和objB都是CMake中的OBJECT库。
我希望main能够链接到两个对象文件。事实并非如此。
cmake_minimum_required(VERSION 3.13)
project(transitive-object-library-link-issue VERSION 1.0.0 LANGUAGES C)
add_library(objA OBJECT a.c)
add_li
我不是没有经验,但我越来越清楚,我在交叉编译和sysroot领域缺乏一些基本的理解。我希望有人能为我提供我需要的宝贵信息。 我下载了一个预构建的armhf gcc交叉编译器/工具链,它附带了一个名为arm-linux-gnueabihf的目录,其中包含以下目录: bin/
include/
lib/ - contains libstdc++.a, libgcc_s.so, but does NOT contain `libcrypt.so` or `libcrypt.so.1`, etc.
libc/ 奇怪的是,libc包含另一组目录,看起来有点像一个单独的sysroot,但我不确定它为什
我使用CMAKE为我需要构建的库创建了Visual Studios C++项目,然后我使用VC++构建了这个库。然而,现在到了为cygwin重新构建相同的库的时候了,这样我就可以使用GNU工具链(g++ make gdb)链接到它。我一直在试图弄清楚如何配置CMAKE来为cygwin构建,但我没有走得太远。我已经在CMAKE网站上寻找帮助(我将继续在那里搜索),但我几乎不知道CMAKE到底是什么,所以我很难找到答案。谁能给我指个更好的方向?(谢谢大家。)
我已经使用CMake作为我的构建工具编译了一个C++静态库,我想将它链接到我的iOS应用程序。
我用Xcode创建了一个简单的“空”应用程序,并将我的库libengine.a .a链接到它。
我试图编译我的iOS项目,链接器给了我这样的警告:
ignoring file /Users/.../build/engine/libengine.a,
file was built for archive which is not the architecture being linked (i386):
/Users/.../build/engine/libengine.a
据我所知,我需要为ARM
我想用emscripten编译SealPIR库来生成一个wasm文件。使用此命令时:emcmake cmake . 我得到了这个错误: CMake Error at CMakeLists.txt:19 (find_package):
By not providing "FindSEAL.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "SEAL", but
CMake did not f
我正在尝试构建项目的静态库,这样我就可以将它链接到另一个项目中(而不是用C/C++编写)。
我已经创建了CMakeLists.txt文件来使用CMake构建它,但是构建的静态库文件是空的。
我怀疑这是由于机顶盒似乎是头-只有库。我尝试用LIBRARY_HEADER_ONLY设置target_compile_definitions标志,但这并没有解决我的问题。
如何将标头库构建为静态库文件(*.a)?或者甚至有可能?如果没有,那么有什么解决办法呢?
这是我的CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(stb C)
se
我有一个具有核心库(下面示例中的LibA)、一个可执行文件和一个依赖于第一个库的第二个库(LibB)的项目。第二个库(LibB)总是以共享(动态库)形式构建的。
我是否可以强迫LibB始终链接到LibA的共享版本?
下面是一个说明这个问题的小CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.16)
project(my_project LANGUAGES CXX)
# LibA should be buildable in either static or shared form.
add_library(LibA A.cpp)
# In
在CMake中,我们使用TARGET_LINK_LIBRARIES()将共享库链接到库/可执行文件。
For example:
TARGET_LINK_LIBRARIES(ExecutableName xxx)
where ExecutableName - is the name of executable
xxx - is the library name.
据我所知,CMake在LINK_DIRECTORIES()宏中提到的路径中搜索"libxxx.so“。但是如果我有一个名为"libxxx.a“的第三方库,那么我如何使用CMake将该库链接到可执行
对不起,有许多类似的问题,但我确实发现,谷歌的CMake查询总是产生相似的-但不一样的场景,冲突的CMake命令等等!
我需要强制我的项目构建32位二进制文件,因为我必须链接到一个只有32位的库。我根据错误消息进行了诊断,例如:
/usr/bin/ld: i386 architecture of input file `*external-32bit-lib*' is incompatible with i386:x86-64 output
因此,根据我收集的资料,我应该使用:
set (CMAKE_CXX_FLAGS "-m32")
这确实改变了一些事情--我现在收到
我正在尝试设置一个工具链文件,以便与CMake 3.12.0版本进行交叉编译。
我的对象文件与.obj上的.o和UNIX中的.o有不同的扩展名。
因此,我将我的CMAKE_LANG_OUTPUT_EXTENSION设置为.src。
不幸的是,CMakeCInformation.cmake文件在以下几行中覆盖了这个变量:
# some compilers use different extensions (e.g. sdcc uses .rel)
# so set the extension here first so it can be overridden by the compiler s