2015-11-02 45 views
0

我有src文章中的article.html测试libxml,我希望阅读它的相对路径'.article',但在clion中,cmake将当前目录更改为“/ home/roroco /.CLion12/system/cmake/generated/c9a7a4c5/c9a7a4c5/Debug0“,我的问题是:是否有get_current_source_dir()如何获得c源代码不cmake编译目录

更新这里是我的ex.c:

#include <unistd.h> 
#include "stdio.h" 

int main(int argc, char **argv) { 
    puts(get_current_dir_name()); 
// /home/roroco/.CLion12/system/cmake/generated/b321980/b321980/Debug 
    FILE *f = fopen('article.html', "r"); 
    fseek(f, 0, SEEK_END); 
// Signal: SIGSEGV (Segmentation fault) 
    return (0); 
}; 

这里是我在这里的文件树

- ex.c 
- CMakeLists.txt 
- article.html 

是我CMakeLists.txt

+0

这似乎并非是一个C语言的问题,因此当你删除C得到更好的反应标签。请提供您尝试实施的解决方案的一些示例。 – Erik

+0

@Erik,这是关于C,我更新我的代码 – nwaicaethi

+0

非常好。 SIGSEGV发生是因为你没有检查NULL的返回值''fopen'''。如果您使用绝对路径而不是相对路径,则会获得更多成功。 – Erik

回答

1

虽然适当的方式来解决,这是对把article.html写入/home/roroco/.CLion12/system/cmake/generated/b321980/b321980/Debug,这里是你可以做的事情:

在的CMakeLists.txt:

add_definitions("-DSOURCE_PATH=\"${CMAKE_SOURCE_PATH}\"") 

而且在ex.c:

fopen(SOURCE_PATH "article.html", "r"); 
+0

thx,它适合我的情况 – nwaicaethi