如何将简单的GCC命令转换为CMake?
我的源代码如何将简单的GCC命令转换为CMake?,c,cmake,C,Cmake,我的源代码 #include <tree_sitter/api.h> int main() { TSParser *parser = ts_parser_new(); } 这个很好用。但如果我在CMake中执行以下操作 cmake_minimum_required(VERSION 3.17) project(tmp_tree_sitter C) set(CMAKE_C_STANDARD 11) include_directories(/home/rip/source_
#include <tree_sitter/api.h>
int main() {
TSParser *parser = ts_parser_new();
}
这个很好用。但如果我在CMake中执行以下操作
cmake_minimum_required(VERSION 3.17)
project(tmp_tree_sitter C)
set(CMAKE_C_STANDARD 11)
include_directories(/home/rip/source_repos/tree-sitter/lib/include)
add_executable(tmp_tree_sitter
main.c
/home/rip/source_repos/tree-sitter/libtree-sitter.a
/home/rip/source_repos/tree-sitter-json/src/parser.c
)
出现以下错误消息
Scanning dependencies of target tmp_tree_sitter
[ 33%] Building C object CMakeFiles/tmp_tree_sitter.dir/main.c.o
[ 66%] Linking C executable tmp_tree_sitter
/usr/bin/ld: CMakeFiles/tmp_tree_sitter.dir/main.c.o: in function `main':
/home/rip/CLionProjects/tmp_tree-sitter/main.c:12: undefined reference to `ts_parser_new'
唯一的区别是,我有不同的目录,因此在一个目录中,源文件名为
testjsonparser.c
,在另一个目录中,源文件名为main.c
。那么,我怎样才能在CMake
中像在gcc
中那样做呢?您需要告诉CMake您想要链接库
为此,我使用了
target\u link\u库 我不知道我是否应该发布错误消息,因为我还必须发布源代码,这与我的问题无关,我认为,因为源代码是相同的,可以与gcc很好地工作。“不工作”并没有给我们太多的工作空间。错误消息会有帮助。好的,我添加了错误消息。~
的扩展由shell完成。也许CMake不会这么做。你试过用完整的路径名来命名你的C文件吗?是的,我也试过。我将更新问题中的路径。
Scanning dependencies of target tmp_tree_sitter
[ 33%] Building C object CMakeFiles/tmp_tree_sitter.dir/main.c.o
[ 66%] Linking C executable tmp_tree_sitter
/usr/bin/ld: CMakeFiles/tmp_tree_sitter.dir/main.c.o: in function `main':
/home/rip/CLionProjects/tmp_tree-sitter/main.c:12: undefined reference to `ts_parser_new'