如何获取c源目录而不是cmake编译目录
How to get c source dir not cmake compile dir
我在 src 中有 article.html 用于测试 libxml,我希望使用相对路径“.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
虽然解决此问题的正确方法是将 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");
我在 src 中有 article.html 用于测试 libxml,我希望使用相对路径“.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
虽然解决此问题的正确方法是将 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");