CMake的制作[2]:***没有规则,使目标`/path/to/uthash/utarray.h',用'HelloTest需要“。停止 [英] CMake make[2]: *** No rule to make target `/path/to/uthash/utarray.h', needed by `HelloTest'. Stop

查看:2541
本文介绍了CMake的制作[2]:***没有规则,使目标`/path/to/uthash/utarray.h',用'HelloTest需要“。停止的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图建立一些混合的C / C ++ code运行一些简单的测试code(HelloTest)这样:

 的#include<&iostream的GT;
#包括cpp_header.h
为externC
{
    #包括c_header.h
}使用命名空间std;INT主(INT ARGC,字符** argv的){
    COUT<< 你好,世界! << ENDL;
    返回0;
}

但我得到这个非常奇怪的错误:

  /Applications/CLion.app/Contents/bin/cmake/bin/cmake --build /用户/用户/图书馆/缓存/ clion10 / cmake的/生成/ c1d0f54d / c1d0f54d /调试--target所有 -  -j 2
使[2]:***没有规则,使目标`/path/to/uthash/utarray.h',用'HelloTest需要。停止。
使[1]:*** [CMakeFiles / HelloTest.dir /全部]错误2
使:*** [全部]错误2

现在,utarray.h是uthash的一部分( http://troydhanson.github.io/uthash/ ),和精明的读者会知道,这不是 .C / CPP 失踪 - utarray.h 没有之一。

CMake的文件-ish看起来像这样

  cmake_minimum_required(3.2版)
项目(HelloTest)#CPP的东西
find_package(CPP_PACKAGE必填)
include_directories($ {} CPP_PACKAGE_INCLUDE_DIR)
link_directories($ {} CPP_PACKGE_LIB_DIR)#C头文件
集(C_ROOT_DIR/路径/要/ C /库)
集(C_INCLUDE_DIR $ {} C_ROOT_DIR / SRC
                      $ {} C_ROOT_DIR / EXT / mtrand
                      $ {} C_ROOT_DIR / EXT / uthash / src目录)
include_directories($ {} C_INCLUDE_DIR)#C头&放大器;来源[我们要避免通配符]
集(C_SOURCE $ {} C_ROOT_DIR /src/bnp.c
                    $ {} C_ROOT_DIR /src/bnp.h



                    $ {} C_ROOT_DIR /ext/uthash/utarray.h
                    $ {} C_ROOT_DIR /ext/uthash/uthash.h
                    $ {} C_ROOT_DIR /ext/uthash/utlist.h
                    $ {} C_ROOT_DIR /ext/uthash/utstring.h)
link_directories($ {} C_SOURCE)集(SOURCE_FILES main.cpp中)
add_executable(HelloTest $ {} SOURCE_FILES)
target_link_libraries(HelloTest $ {CPP_LIBRARIES} $ {} C_SOURCE)


解决方案

您设置 C_SOURCE 变量来源名单和头,但是在命令中使用 link_directories target_link_libraries ,涉及到的链接的,不是的编译

或许,你需要添加这个变量的内容 SOURCE_FILES 代替。

I am trying to build some mixed C/C++ code to run some simple test code (HelloTest) as such:

#include <iostream>
#include "cpp_header.h"
extern "C"
{
    #include "c_header.h"
}

using namespace std;

int main(int argc, char **argv) {
    cout << "Hello, World!" << endl;
    return 0;
}

but I get this very strange error:

/Applications/CLion.app/Contents/bin/cmake/bin/cmake --build /Users/user/Library/Caches/clion10/cmake/generated/c1d0f54d/c1d0f54d/Debug --target all -- -j 2
make[2]: *** No rule to make target `/path/to/uthash/utarray.h', needed by `HelloTest'.  Stop.
make[1]: *** [CMakeFiles/HelloTest.dir/all] Error 2
make: *** [all] Error 2

Now, utarray.h is part of uthash (http://troydhanson.github.io/uthash/), and savvy readers will know that this is not a question of the .c/cpp missing - utarray.h doesn't have one.

The CMake file -ish looks like this

cmake_minimum_required(VERSION 3.2)
project(HelloTest)

# CPP stuff
find_package(CPP_PACKAGE REQUIRED)
include_directories(${CPP_PACKAGE_INCLUDE_DIR})
link_directories(${CPP_PACKGE_LIB_DIR})

# C Headers
set(C_ROOT_DIR "/path/to/c/library")
set(C_INCLUDE_DIR ${C_ROOT_DIR}/src
                      ${C_ROOT_DIR}/ext/mtrand
                      ${C_ROOT_DIR}/ext/uthash/src)
include_directories(${C_INCLUDE_DIR})

# C Headers & Source [we want to avoid globbing]
set(C_SOURCE   ${C_ROOT_DIR}/src/bnp.c
                    ${C_ROOT_DIR}/src/bnp.h
.
.
.
                    ${C_ROOT_DIR}/ext/uthash/utarray.h
                    ${C_ROOT_DIR}/ext/uthash/uthash.h
                    ${C_ROOT_DIR}/ext/uthash/utlist.h
                    ${C_ROOT_DIR}/ext/uthash/utstring.h)
link_directories(${C_SOURCE})

set(SOURCE_FILES main.cpp)
add_executable(HelloTest ${SOURCE_FILES})
target_link_libraries(HelloTest ${CPP_LIBRARIES} ${C_SOURCE})

解决方案

You set C_SOURCE variable to list of sources and headers, but use it in commands link_directories and target_link_libraries, related to linking, not a compiling.

Probably, you need to append content of this variable to SOURCE_FILES instead.

这篇关于CMake的制作[2]:***没有规则,使目标`/path/to/uthash/utarray.h',用'HelloTest需要“。停止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆