【发布时间】:2021-12-03 09:08:36
【问题描述】:
我尝试了很多命令,最后放弃了。 我知道我过去做过。 但是请告诉我为什么它不起作用:,( 它只是一个带有小库 testlib.h 的 main.c
$cmake ..
-- Configuring done
CMake Error at CMakeLists.txt:15 (add_library):
Cannot find source file:
PUBLIC
Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm .h
.hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .hip .ispc
CMake Error at CMakeLists.txt:15 (add_library):
No SOURCES given to target: lib
CMakeLists.txt:
cmake_minimum_required(VERSION 3.0)
project(WTF)
add_executable(result main.c)
set_target_properties(result PROPERTIES
C_STANDARD 11
C_STANDARD_REQUIRED ON
C_EXTENSIONS OFF
)
set (DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set (DIRLIBS "${CMAKE_CURRENT_SOURCE_DIR}/libs")
message("${DIRLIBS}")
message("${DIR}")
add_library(lib PUBLIC testlib.h testlib.c)
target_include_directories(result PUBLIC ${DIR} ${DIRLIBS} )
set_target_properties(result PROPERTIES LINKER_LANGUAGE CXX)
target_link_libraries(result PUBLIC lib )
$cmake --build .
usr/bin/ld: cannot find -ltestlib.h
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/result.dir/build.make:97: result] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/result.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
main.c
#include "testlib.h"
#include <stdio.h>
//#include "libs/lib2.h"
int main(void){
printf("hw");
f1();
testlib.h
void f1(void);
testlib.c
#include <stdio.h>
#include "testlib.h"
void f1(void){
printf("f1");}
【问题讨论】:
-
大声笑首先我以为我没注意什么。但是后来我将它与一个旧项目进行了比较,它确实是相同的 xD 但是好吧,也许我错过了一些东西。告诉我:D
-
天哪,太可怕了。我还有另一个(更大的)项目。我只是将 testlib.h 添加到 main.c 旁边的工作区中。我还使用 target_include_directories 添加了这个路径(可能会再次添加)。它还说找不到testlib.h...啊,我也写到:target_link_libraries
-
target_link_libraries(result PUBLIC testlib.h ) :您包含头文件而不是库
-
使用 target_include_directories() 包含标题
-
啊好吧,让我把它改成图书馆
标签: cmake