我正在尝试创建一个扩展名为
.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.
CMake 有一些基于源文件扩展名的语言预定义规则。
.cpp
是 C++ 的已知扩展,但显然 .inl
不是。
您可以使用以下命令将语言显式设置为 C++:
set_target_properties(printer PROPERTIES LINKER_LANGUAGE CXX)