如何获取c源目录而不是cmake编译目录

时间:2015-11-02 04:32:05

标签: c cmake libxml2

我在src中有一个用于测试libxml的article.html,我希望用相对路径“.article”读取它,但在clion中,cmake将当前目录更改为“/home/roroco/.CLion12/system/cmake/generated/ c9a7a4c5 / c9a7a4c5 / Debug0“,我的问题是:有get_current_source_dir()吗?

更新这是我的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

1 个答案:

答案 0 :(得分: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");