我是CMake项目,我正在尝试测试import React from 'react;
import PageVisibility from 'react-page-visibility';
class YourComponent extends React.Component {
state = {
isWindowInFocus: true,
}
componentDidMount() {
const { isWindowInFocus } = this.props;
if (!isWindowInFocus) {
// do something
}
}
listentoWindow = isVisible => {
this.setState({
isWindowInFocus: isVisible,
});
}
render() {
return (
<PageVisibility onChange={this.listentoWindow}>
<div>
Your component JSX
</div>
</PageVisibility>
);
}
}
的可用性。至于标题,只有在我首先server {
// works
root /var/www/nwb-dashboard/dist;
server_name blaque.live www.blaque.live;
index index.html index.htm;
// doesnt work
location /settings/ {
alias /var/www/nwb-dashboard/dist;
index index.html index.htm
}
}
时才会公开此函数原型。
可能是因为这个原因,简单地做
pthread_setname_np()
即使存在,也不会检测到该功能。文档中提到了#define _GNU_SOURCE
,但我不确定如何使用(也不是完全正确的方法)。
如何让CMake正确检测此功能的存在?
答案 0 :(得分:1)
是的,CMAKE_REQUIRED_DEFINITIONS
是测试此功能的正确方法。这是其用法示例:
set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
CHECK_FUNCTION_EXISTS(pthread_setname_np HAVE_PTHREAD_SETNAME_NP)
unset(CMAKE_REQUIRED_DEFINITIONS)
您可能还想阅读以下内容:What does “#define _GNU_SOURCE” imply?
答案 1 :(得分:0)
这最终对我有用(至少在Ubuntu 18.04上,当前正在为其他人运行CI):
list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
list(APPEND CMAKE_REQUIRED_LIBRARIES pthread)
CHECK_SYMBOL_EXISTS(pthread_setname_np pthread.h HAVE_PTHREAD_SETNAME_NP)
list(REMOVE_ITEM CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
重要提示:请确保您拥有干净的构建环境,且以前的构建没有遗留任何内容。对于cmake4eclipse,这意味着:
对我来说,追加pthread
库证明是必需的,否则它将无法检测到该函数。在某些系统上,库名似乎是pthreads
(至少我看到两者都进行了CMake测试);这些系统可能需要进一步调整以检测功能。
CHECK_FUNCTION_EXISTS
而不是CHECK_SYMBOL_EXISTS
也会很好(我都尝试成功了)。