创建扩展名为 .inl 的静态文件库

问题描述 投票:0回答:1

我正在尝试创建一个扩展名为

.inl
的静态文件库,但失败了。如果我将扩展名更改为
.cpp
那么它就会构建。

CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)
project(CarSimulator VERSION 0.1.0 LANGUAGES C CXX)

include(CTest)
enable_testing()

add_library(printer
   print.inl print.hpp
)
set_property(TARGET printer PROPERTY CXX_STANDARD 20)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

打印.hpp

#ifndef PRINT_H
#define PRINT_H

template<typename T>
void print(const T& t);

#include "print.cpp"

#endif

打印.inl

#include <iostream>

template<typename T>
void print(const T& t) {
   std::cout << t << std::endl;
}

错误

CMake Error: Cannot determine link language for target "printer".
CMake Error: CMake can not determine linker language for target: printer
-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.
c++ cmake static-libraries
1个回答
0
投票

CMake 有一些基于源文件扩展名的语言预定义规则。

.cpp
是 C++ 的已知扩展,但显然
.inl
不是。

您可以使用以下命令将语言显式设置为 C++:

set_target_properties(printer PROPERTIES LINKER_LANGUAGE CXX)
© www.soinside.com 2019 - 2024. All rights reserved.