- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 Cmake 并在简单的 C 项目中添加库项目。我创建了一个具有以下结构的简单库项目。
MyLibraryProjectDirectory
|
-- library.C
-- library.h
-- UmerDir
|
-- Umer.h
-- Umer.c
Cmakelist.txt 正在生成我在另一个 C 程序中使用的 .a lib
文件。
C 程序 的结构如下:
MyCProgram
|
-- main.c
-- libuntitled.a
libuntitled.a
是我的库项目中CmakeList.txt生成的库文件。
问题是当我尝试使用 .a
文件构建 C 项目时,它会抛出以下内容
错误:
"C:\Program Files\JetBrains\CLion 2017.2\bin\cmake\bin\cmake.exe" --build C:\Users\Lenovo\CLionProjects\AppProject\cmake-build-debug --target AppProject -- -j 2
[ 50%] Linking C executable AppProject.exe
C:/mingw-w64/i686-7.1.0-posix-dwarf-rt_v5-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llibuntitled
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [AppProject.exe] Error 1
CMakeFiles\AppProject.dir\build.make:95: recipe for target 'AppProject.exe' failed
mingw32-make.exe[2]: *** [CMakeFiles/AppProject.dir/all] Error 2
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/AppProject.dir/all' failed
mingw32-make.exe[1]: *** [CMakeFiles/AppProject.dir/rule] Error 2
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/AppProject.dir/rule' failed
mingw32-make.exe: *** [AppProject] Error 2
Makefile:117: recipe for target 'AppProject' failed
我不确定我做错了什么,所以请原谅我对 CMake 和 C 构建系统的了解极其有限。
为方便起见,我还附上了 C 程序和 C 库项目的屏幕截图。
库项目截图:
C 程序项目:
编辑:
我通过在库名称前添加 ${CMAKE_SOURCE_DIR}
修复了库未找到的问题。显然,即使在同一目录中,Cmake 也需要完整的分类路径来定位 .a 文件,这有点奇怪。无论如何,现在我收到以下错误:
错误:
"C:\Program Files\JetBrains\CLion 2017.2\bin\cmake\bin\cmake.exe" --build C:\Users\Lenovo\CLionProjects\AppProject\cmake-build-debug --target AppProject -- -j 2
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/AppProject.dir/all' failed
mingw32-make.exe[3]: *** No rule to make target '../libuntitled', needed by 'AppProject.exe'. Stop.
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/AppProject.dir/rule' failed
mingw32-make.exe[2]: *** [CMakeFiles/AppProject.dir/all] Error 2
Makefile:117: recipe for target 'AppProject' failed
mingw32-make.exe[1]: *** [CMakeFiles/AppProject.dir/rule] Error 2
mingw32-make.exe: *** [AppProject] Error 2
mingw32-make.exe 3 : 没有规则使目标 '../libuntitled' 成为 'AppProject.exe' 所需要的。停止。
最佳答案
除此之外,我不会在第一个 CMake-Project 中创建库并在第二个中手动链接它。可能这会对您有所帮助:How do I tell CMake to link in a static library in the source directory?
但是您应该(如果可能的话)寻找一种方法来创建带有子项目的单个 CMake 项目。这里有一个很好的解释的链接:http://techminded.net/blog/modular-c-projects-with-cmake.html
关于c++ - 无法在 C 程序中链接 .a 库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45236207/
我是一名优秀的程序员,十分优秀!