Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将简单的GCC命令转换为CMake?_C_Cmake - Fatal编程技术网

如何将简单的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'